关于jsp动态在图片上生成文字

请问一张图片 怎么能实现在旁边的文本框里输入文字 文字就在图片上显示?请问这是用什么来实现的 有做过JSP在图片上动态生成文字的朋友请指教

[code="java"]
package image;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;

public class UpdateImg {
private Font font=null;// 添加字体的属性设置
private Graphics2D g=null;
private int fontsize=0;
private int x=0;
private int y=0;

public static void main(String[] args){
UpdateImg img = new UpdateImg();
BufferedImage bufferImg = img.loadImageLocal("E:\\workspace\\gameTest\\src\\image\\1.jpg");
bufferImg = img.modifyImage(bufferImg,"帅气",100,100);
img.writeImageLocal("2.jpg",bufferImg);
}

/**
 * 导入本地图片到缓冲区
 */
public BufferedImage loadImageLocal(String imgName) {
try{
    return ImageIO.read(new File(imgName));
}catch(IOException e){
    System.out.println(e.getMessage());
}
return null;
}

/**
 * 导入网络图片到缓冲区
 */
public BufferedImage loadImageUrl(String imgName) {
try{
    URL url=new URL(imgName);
    return ImageIO.read(url);
}catch(IOException e){
    System.out.println(e.getMessage());
}
return null;
}

/**
 * 生成新图片到本地
 */
public void writeImageLocal(String newImage, BufferedImage img) {
if(newImage != null && img != null){
    try{
    File outputfile=new File(newImage);
    ImageIO.write(img,"jpg",outputfile);
    }catch(IOException e){
    System.out.println(e.getMessage());
    }
}
}

/**
 * 设定文字的字体等
 */
public void setFont(String fontStyle, int fontSize) {
this.fontsize=fontSize;
this.font=new Font(fontStyle,Font.PLAIN,fontSize);
}

/**
 * 修改图片,返回修改后的图片缓冲区(只输出一行文本)
 */
public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) {
try{
    int w=img.getWidth();
    int h=img.getHeight();
    g=img.createGraphics();
    g.setBackground(Color.WHITE);
    g.setColor(Color.RED);
    if(this.font != null)
    g.setFont(this.font);
    // 验证输出位置的纵坐标和横坐标
    if(x >= h || y >= w){
    this.x=h - this.fontsize + 2;
    this.y=w;
    }else{
    this.x=x;
    this.y=y;
    }
    java.util.Random ran=new java.util.Random();   
    for(int i=0; i<20;i++){
    g.setColor(Color.BLACK);
    int x1=ran.nextInt(w);
    int y1=ran.nextInt(h);
    g.drawLine(x1,y1,x1,y1);        
    }
    if(content != null){
    g.drawString(content.toString(),this.x,this.y);
    }
    g.dispose();
}catch(Exception e){
    System.out.println(e.getMessage());
}
return img;
}

/**
 * 修改图片,返回修改后的图片缓冲区(输出多个文本段) xory:true表示将内容在一行中输出;false表示将内容多行输出
 */
public BufferedImage modifyImage(BufferedImage img, Object[] contentArr, int x, int y, boolean xory) {
try{
    int w=img.getWidth();
    int h=img.getHeight();
    g=img.createGraphics();
    g.setBackground(Color.WHITE);
    g.setColor(Color.RED);
    if(this.font != null)
    g.setFont(this.font);
    // 验证输出位置的纵坐标和横坐标
    if(x >= h || y >= w){
    this.x=h - this.fontsize + 2;
    this.y=w;
    }else{
    this.x=x;
    this.y=y;
    }       

    if(contentArr != null){
    int arrlen=contentArr.length;
    if(xory){
        for(int i=0; i < arrlen; i++){
        g.drawString(contentArr[i].toString(),this.x,this.y);
        this.x+=contentArr[i].toString().length() * this.fontsize / 2 + 5;// 重新计算文本输出位置
        }
    }else{
        for(int i=0; i < arrlen; i++){
        g.drawString(contentArr[i].toString(),this.x,this.y);
        this.y+=this.fontsize + 2;// 重新计算文本输出位置
        }
    }
    }

    g.dispose();
}catch(Exception e){
    System.out.println(e.getMessage());
}
return img;
}

}

[/code]

这是直接把文字写在图片上,如果你要动态往图片上写的话,增加个AJAX应该就行了!

想在图片上写字是不太可能的,你这里是前台页面,这样做更没有必要.
碰到这样的情况,一般会采用DIV覆盖来实现,用一个大小和图片一样的DIV覆盖在图片之上,通过样式表设置DIV为透明,将文字放入这个DIV中就行了。
这样做是最简单的了..