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中向瀏覽器中輸出隨機圖片
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.