package com.yueting.util;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.*;
/**
* 这个类用于产生随机图片
* @author Administrator
*
*/
class MyRandomImage
{
//图片的长度和宽度
private int width = 120;
private int height = 30;
private String imageName;// 用户存放在HttpSession中的随机字符串的变量
public MyRandomImage(HttpServletResponse resp, HttpServletRequest req) throws IOException
{
resp.setHeader("Pragma", "-1");
resp.setHeader("Expires", "-1");
resp.setHeader("Cache-Control", "no-cache");
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//设置背景颜色
setBackground(g);
//设置边框
setBorder(g);
//设置干扰线
MakeRadomLine(g);
//产生随机字符
StringBuilder sb = randomChar(g);
//将图片上产生的随机字符存放到session中
req.getSession().setAttribute("random", sb.toString());
resp.setContentType("image/jpeg");
ImageIO.write(image, "jpg", resp.getOutputStream());
}
/**
* 设置背景颜色
* @param g
*/
private void setBackground(Graphics g)
{
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
}
/**
* 设置图片边框颜色
* @param g
*/
private void setBorder(Graphics g)
{
g.setColor(Color.blue);
g.drawRect(0, 1, width-2, height-2);
}
/**
* 在图片上画干扰线
* @param g
*/
private void MakeRadomLine(Graphics g)
{
g.setColor(Color.GREEN);
Color[] c = {Color.red, Color.blue, Color.BLACK, Color.gray};
for(int i = 0; i < 4; i++)
{
g.setColor(c[new Random().nextInt(4)] );
g.drawLine(new Random().nextInt(30), new Random().nextInt(30),
new Random().nextInt(150), new Random().nextInt(30));
}
}
/**
* 在图片上画字符
* @param g
* @return
*/
private StringBuilder randomChar(Graphics g)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 4; i++)
{
String str = (char)(62+new Random().nextInt(26))+"" ;
sb.append(str);
g.setFont(new Font(null, Font.BOLD, 20));
Graphics2D g2 = (Graphics2D)g;
g.drawString(str, 15+i*20, 25);
}
return sb;
}
}
web中向浏览器中输出随机图片
最新推荐文章于 2022-03-17 11:36:36 发布