精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>JAVA编程>>JSP/Servlet>>Zombie:如何用Servlet生成gif或jpeg

主题:Zombie:如何用Servlet生成gif或jpeg
发信人: huhao98()
整理人: consultant(2000-08-12 15:01:44), 站内信件
ServletFAQ(3) 如何用Servlet生成gif或jpeg图像?
============================================

这个问题可细分为两个问题
1.如何在Server上生成一个memory Image
2.如何将java.awt.Image Object转换成gif和Jpeg

Server上生成一个memory Image有两个办法
=====================================
- 如果用Java 2,你可以直接使用BufferedImage Class.
- 传统上,我们用Frame 来生成image, Example:

范例(1):
   public Image createImage(Dimension size)
   {
     Frame dummy = new Frame();
     dummy.addNotify (); // 注意,一定要addNotify,理由详见API
     Image img = dummy.createImage (size.width, size.height);   
     Graphics g = img.getGraphics (); 
     doDraw(g);// doDraw 是你实现Drawing logic的地方
   }
    
将java.awt.Image Object转换成gif和Jpeg
========================================
有很多现成的GIF和JPEG编码器是用Java写成的,你可以download一个。
推荐Acme.JPM.Encoder.GifEncoder和Acme.JPM.Encoder.JpegEncoder,
它的GifEncoder支持interlace模式,可从以下地址找到。
http://www.acme.com/java/


范例(2):
public void doGet( HttpServletRequest request,
                 HttpServletResponse response) 
                 throws IOException, ServletException
 {  
  int w=300;
  int h=200;

  try 
  {
    //长和宽可由Parameter指定
    w = Integer.parseInt (request.getParameter ("w"));
    h = Integer.parseInt ( request.getParameter ("h"));
   }
   catch (Exception ex){}
  
  // 创建图形,详见范例(1):
  Image img = createImage (new Dimension(w,h));

  // 设定content-type并以防生成的图形被Browser cache
  response.setContentType ("image/gif");  
  response.setHeader("Cache-Control","no-store");
  response.setHeader("Pragma","no-cache");
  response.setDateHeader ("Expires", 0);

  // 用GifEncoder输出gif图形  
  OutputStream out = response.getOutputStream ();  
  new GifEncoder(img,out,true).encode();  
  out.close ();
 } 

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 203.26.36.20]

[关闭][返回]