⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 createimageservlet.java

📁 一个servlet创建GIF图片的功能
💻 JAVA
字号:
package com.image;

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.font.*; 
import java.awt.geom.Rectangle2D;

public class CreateImageServlet extends HttpServlet {

	
	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occure
	 */
	 public void init() throws ServletException {
		 
		 
	  }
	 public void doGet(HttpServletRequest request, 
             HttpServletResponse response) 
throws IOException, ServletException 
{ 
doPost(request,response);  
} 

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		response.setContentType("text/html;charset=UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setHeader("Cache-Control", "no-store"); //HTTP1.1
		response.setHeader("Pragma", "no-cache"); //HTTP1.0
		response.setDateHeader("Expirse", 0); //prevents caching at the proxy server
       
      
		String ddate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
		  response.setContentType("image/gif");
		  String path=this.getServletContext().getRealPath("/pic/time.gif");
		 String name="北京时间";
		 //name=new String(name.getBytes("8859_1"), "utf-8");
		 ServletOutputStream out=response.getOutputStream();  


	      createImage(180,15,name+ddate,out,path);
	      response.setContentType("text/html;charset=UTF-8");
			response.setCharacterEncoding("UTF-8");
	     
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws IOException 
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	
	 private void createImage(int width,int height,String s,OutputStream out,String path) throws IOException {
		
	        BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	       File file=new File(path);
	        BufferedImage src = ImageIO.read(file);
	        Graphics2D g = bi.createGraphics();
	        // set background:
	        g.setBackground(Color.white);
	        g.clearRect(0, 0, width, height);
	        // set fore color:
	        g.setColor(Color.red);
	        // start draw:
	        
	       // g.drawLine(0, 0, 99, 199);
	        
	        FontRenderContext context = g.getFontRenderContext();
	        Font font = new Font("Serif", Font.BOLD, 10);
	        Rectangle2D bounds = font.getStringBounds(s, context); 
	        double x =15;    
	        double y = (height - bounds.getHeight()) / 2;    
	        double ascent = -bounds.getY();    
	        double baseY = y + ascent; 
	      
	        g.drawImage(src,1, 1, null);
	        g.drawString(s, (int)x, (int)baseY);
	        // end draw:
	        g.dispose();
	        bi.flush();
	        // encode:
	        try {
				GIFEncoder encode = new GIFEncoder(bi);
				encode.Write(out);
			} catch (AWTException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}catch(IOException ioe) {
			      //      ioe.printStackTrace();
			        }
			out.close();
			
	      //  OutputStream output = new BufferedOutputStream(
	        	 //   new FileOutputStream(args[1]));
	      //  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
	      //  JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
	      //  param.setQuality(1.0f, false);
	      //  encoder.setJPEGEncodeParam(param);
	      //  try {
	         //   encoder.encode(bi);
	      //  }
	      //  catch(IOException ioe) {
	      //      ioe.printStackTrace();
	      //  }
	    }
	

	
	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -