HttpServlet动态生成图像

HttpServlet动态生成图像

Java动态生成图像使用了BufferedImageGraphics2D.

 

HttpServlet根据请求内容动态生成图像的代码如下:

 

OutputStream out = response.getOutputStream();

 

Font font = new Font("微软雅黑", Font.BOLD, 19);

 

int sigW = 20;

int sigH = 26;

 

String count = request.getParameter("count");

if (count == null || count.equals(""))

{

     count = "1";

}

 

int num = count.length();

// 声明绘制的BufferedImage

BufferedImage img = new BufferedImage(num * (sigW + 1), sigH, BufferedImage.TYPE_INT_RGB);

// 由上面的BufferedImage获得Graphics2D画布

Graphics2D g = (Graphics2D) img.getGraphics();

// 将画布的绘制颜色设置为黑色

g.setColor(Color.black);

// 在画布上绘制一个矩形

g.fillRect(0, 0, num * (sigW + 1), sigH);

// 将画布的绘制颜色设置为白色

g.setColor(Color.white);

// 设置画布的Font属性

g.setFont(font);

// 循环在画布上绘制request中的每一个字符

for (int i = 0; i < count.length(); i++)

{

     g.drawString(count.charAt(i) + "", (sigW + 1) * i, 19);

     // 绘制一条竖线分割

     g.drawLine((sigW + 1) * i + sigW, 0, (sigW + 1) * i + sigW, sigH);

}

// 利用ImageIO将图像输出到responseOutputStream

ImageIO.write(img, "jpg", out);

 

【说明】

上面使用了ImageIO将绘制得到的BufferedImage输出给了response的输出流,从而发送给浏览器,除了使用ImageIO之外,还可以使用JPEGImageEncoder来实现上面的过程,具体实现如下:

 

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(img);

 HttpServlet动态生成图像_第1张图片

 

你可能感兴趣的:(HttpServlet动态生成图像)