使用Servlet繪制動態的數字圖片

jopen 11年前發布 | 16K 次閱讀 Servlet Java開發

以下是web.xml的配置

    <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
;
<servlet>
<servlet-name>GenerateImageServlet</servlet-name>
<servlet-class>com.jadyer.servlet.GenerateImageServlet</servlet-class>
</servlet>

  <servlet-mapping>  
    <servlet-name>GenerateImageServlet</servlet-name>  
    <url-pattern>/servlet/image</url-pattern>  
  </servlet-mapping>  
</web-app>  </pre></span></strong></span>以下是index.jsp的內容<pre class="brush:java; toolbar: true; auto-links: false;">    <%@ page language="java" pageEncoding="UTF-8"%>  
<%response.sendRedirect(request.getContextPath()+"/servlet/image");%>  </pre></span></strong></span>以下核心GenerateImageServlet.java的代碼<pre class="brush:java; toolbar: true; auto-links: false;">    package com.jadyer.servlet;  
import java.awt.Color;  
import java.awt.Font;  
import java.awt.Graphics2D;  
import java.awt.image.BufferedImage;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.util.Random;  
import javax.imageio.ImageIO;  
import javax.imageio.stream.ImageOutputStream;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

/** 
 * 繪制隨機數字圖片的Servlet 
 */  
public class GenerateImageServlet extends HttpServlet {  
    private static final long serialVersionUID = 760480418450678827L;  

    // 產生的圖像的寬度,單位為像素  
    private final static int WIDTH = 260;  

    // 產生的圖像的高度,單位為像素  
    private final static int HEIGHT = 60;  

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {  
        // 設置輸出的內容的類型為JPEG圖像  
        response.setContentType("image/jpeg");  
        OutputStream os = response.getOutputStream();  
        createImage(os);  
        os.close();  
    }  

    /** 
     * 繪制輸出整個圖形 
     */  
    public void createImage(OutputStream os) throws IOException {  
        // 創建一個BufferedIamge對象  
        BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);  

        // 獲取的Graphics2D對象,通過這個對象完成繪圖  
        Graphics2D g = image.createGraphics();    

        // 繪制背景圖  
        g.setColor(Color.white);  
        g.fillRect(0, 0, WIDTH, HEIGHT);      

        // 畫邊框  
        g.setColor(Color.black);  
        g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1);  

        // 設定字體  
        g.setFont(new Font("Times New Roman", Font.PLAIN, 60));  

        // 生成隨機類  
        Random random = new Random();  

        // 取隨機產生的6位數字  
        for (int i = 0; i < 6; i++) {  
            String rand = String.valueOf(random.nextInt(10));  
            // 將隨機產生的數字顯示到圖象中  
            g.drawString(rand, 40 * i + 20, 50);  
        }  

        // 生成圖像的輸出流  
        ImageOutputStream ios = ImageIO.createImageOutputStream(os);  
        ImageIO.write(image, "jpeg", ios);  
        ios.close();  
    }  
}  </pre></span></strong></span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!