发信人: 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]
|
|