读书人

关于servlet输出图象的有关问题

发布时间: 2012-01-03 22:16:07 作者: rapoo

求助,关于servlet输出图象的问题
我这样写:

public void doGet(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 ");

ServletOutputStream sos = response.getOutputStream();
BufferedImage bi=ImageIO.read(new File( "imageNotFound.jpg "));
File f = new File( "abc.jpg ");

ImageIO.write(bi, "JPG ",sos);
ImageIO.write(bi, "JPG ",f);
sos.close();
}

输入6.41k的jpeg图片
输出到文件里变成2.56k的jpeg图片
输出到ServletOutputStream里,却变为了25.8k的bmp图片

请问为什么啊?怎么解决?谢谢

[解决办法]
不要用Image,直接用FileInputStream读入后写出到你的sos里面去。
[解决办法]
try this.没有测试过,以前也没有写过
public void doGet(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 ");

ServletOutputStream sos = response.getOutputStream();
FileInputStream bis = new FileInputStream(new File( "imageNotFound.jpg ")));

Byte c;
while((c=bis.readByte()) != -1)
sos.write(c);
}
bis.close();
sos.close();

读书人网 >J2SE开发

热点推荐