您的位置:首页 > 理论基础 > 计算机网络

HttpServlet动态生成图像

2015-06-10 21:57 609 查看
HttpServlet动态生成图像

Java动态生成图像使用了BufferedImage和Graphics2D.

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将图像输出到response的OutputStream

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

【说明】

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

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(img);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: