標籤:
Photo類
package com.baowei.utils;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletResponse;public class Photo { private static final int width = 120; private static final int height = 25; private HttpServletResponse response; private String randomData = ""; public Photo(HttpServletResponse response) { this.response = response; } public void createImage() throws IOException { // 1、在記憶體裡面建立一個圖片 BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 2.1得到圖片 Graphics g = bimage.getGraphics(); // 2.2設定圖片的背景顏色 setBackground(g); // 3、設定圖片邊框 setBorder(g); // 4、設定圖片幹擾線 setLine(g); // 5、向圖片寫資料 setRandomData(g); // 6、將圖片寫給客戶機 response.setContentType("image/jpeg"); ImageIO.write(bimage, "jpg", response.getOutputStream()); } public void setBackground(Graphics g) { Color color = g.getColor(); g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); g.setColor(color); } public void setBorder(Graphics g) { Color color = g.getColor(); g.setColor(Color.BLUE); g.drawRect(1, 1, width - 2, height - 2); g.setColor(color); } public void setLine(Graphics g) { for (int i = 0; i < 4; i++) { // 此處獲得到的x,y應該與上面的圖片的寬高關聯起來 int x1 = new Random().nextInt(width); int x2 = new Random().nextInt(width); int y1 = new Random().nextInt(height); int y2 = new Random().nextInt(height); Color color = g.getColor(); g.setColor(Color.GREEN); g.drawLine(x1, y1, x2, y2); g.setColor(color); } } public void setRandomData(Graphics g) { // 擷取隨機的資料 // String data = ""; for (int i = 0; i < 4; i++) { randomData += new Random().nextInt(10) + " "; } // 設定資料的字型和顏色 Color color = g.getColor(); g.setColor(Color.RED); g.setFont(new Font("宋體", Font.BOLD, 20)); g.drawString(randomData, 20, 20); g.setColor(color); } public String getRandomData() { String data[] = randomData.split(" "); String returnData = ""; for (int i = 0; i < data.length; i++) { returnData += data[i]; } return returnData; }}
Demo01測試用的servlet
package com.baowei.servlet;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.baowei.utils.Photo;public class Demo01 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); Photo pt = new Photo(response); pt.createImage(); System.out.println(pt.getRandomData()); String data = pt.getRandomData(); // 存入會話session //HttpSession session = request.getSession(true); //session.setAttribute("data", data); getServletContext().setAttribute("data", data); }}
Java產生圖片驗證碼2