Posted on Tuesday, July 04, 2006 4:12 AM
有时我们可能会想在图片上动态加入一些文字,那应该怎么,其实也很简单,就是利用Graphics这个类来对图片内容进行修改,如下:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;import java.io.InputStream;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class CreateImage extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Cache-Control","no-store"); response.setContentType("image/jpeg");
ServletOutputStream out=response.getOutputStream();
String imagePath=request.getSession().getServletContext().getRealPath("images")+"\\01.jpg";
InputStream imageIn = new FileInputStream(new File(imagePath));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics g = image.getGraphics();
g.setColor(new Color(255,0,0)); //更改输出字体的颜色
g.setFont(new Font("Default",Font.BOLD,30)); //更改字体大小
g.drawString("Hello",30,100); //在图片上坐标0,13的位置上输出"Hello everyone!" JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close();
}