求助,关于servlet输出图象的问题

zapdos 2007-07-05 12:24:04
我这样写:

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图片

请问为什么啊?怎么解决?谢谢
...全文
253 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
VIV777 2007-07-06
  • 打赏
  • 举报
回复
不好意思,昨晚太晚了,没看清楚
zhaolq 2007-07-05
  • 打赏
  • 举报
回复
中科院计算所培训中心!!

如何打造java程序员的职场持久力 大型免费公开课!!
主讲教师:杨少波老师
中科院副研究员、副校长、北京交通大学硕士生导师、首席技术总监、
讲座时间:2007年7月7日 14:00—16:30
讲座地点:中关村958楼中科天博大厦
与会者可参加现场抽奖,精美礼品等你拿!!!
咨询电话:82661259
zapdos 2007-07-05
  • 打赏
  • 举报
回复
顶一下先,哪位高手帮帮忙啊,谢了
VIV777 2007-07-05
  • 打赏
  • 举报
回复
还有while((c=bis.readByte()) != -1)
sos.write(c);
}中的}我放错地方了,放到最后
VIV777 2007-07-05
  • 打赏
  • 举报
回复
你的close在while循环里面,另外我没有用缓冲,在while((c=bis.readByte()) != -1)
sos.write(c);
}中我不知道sos.write(c);能不能输出byte,自己查一下
VIV777 2007-07-05
  • 打赏
  • 举报
回复
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();
zapdos 2007-07-05
  • 打赏
  • 举报
回复
再顶
zapdos 2007-07-05
  • 打赏
  • 举报
回复
写成这样?
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();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File("imageNotFound.jpg")),1024);

int c;
while((c=bis.read()) != -1)
sos.write(c);
bis.close();
sos.close();
}

还是一样啊,输出26K的BMP图片
高手麻烦你写一个好不好?谢了
weihthchk 2007-07-05
  • 打赏
  • 举报
回复
不要用Image,直接用FileInputStream读入后写出到你的sos里面去。
zapdos 2007-07-05
  • 打赏
  • 举报
回复
再顶

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧