servlet显示图片 从本地读取 但是在浏览器里面显示不出来 是一张黑色的图片 请大家帮我看看

publicclassCreateImgServletextendsHttpServlet{//双缓冲画笔privateGraphicsmemoryGraphics;//... public class CreateImgServlet extends HttpServlet {

//双缓冲画笔
private Graphics memoryGraphics;
//双缓冲画布
private BufferedImage memoryImage;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
memoryImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);
this.memoryGraphics = this.memoryImage.getGraphics();
Image bg = new ImageIcon("img/bg.jpg").getImage();
memoryGraphics.drawImage(bg, 0,0,null);
JPEGImageEncoder ecoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
ecoder.encode(memoryImage);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);
}
throws ServletException, IOException {

//在缓存中建立缓存650*550图片
memoryImage=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);

//得到双缓冲画笔,画笔画出的东东是画在双缓冲画布上的
this.memoryGraphics = this.memoryImage.getGraphics();
Image bg = new ImageIcon("img/bg.jpg").getImage();
memoryGraphics.drawImage(bg, 0,0,null);

//将生成的图片数据写入到输出流
JPEGImageEncoder ecoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
ecoder.encode(memoryImage);
}

在地址输入http://localhost:8088/TestMap/CreateImgServlet
没有显示原图片 显示的是一张黑色的图片 怎么改 谢谢大家
展开
 我来答
roserouge
推荐于2016-06-13 · TA获得超过462个赞
知道小有建树答主
回答量:1554
采纳率:0%
帮助的人:489万
展开全部
。。。双缓冲画布 对于http这种一次单向的输出有用么
双环冲等于两张图片,前面的图片会先显示出去(直接输出),直到背后的图片准备好(在http里其实已经输出结束了,不存在这一次了),然后整个地完整的替换到前端去。最开始两站图片应该都是空白的(不一定是白的,基色填充,可能是黑色,或者别的什么颜色)

reponse.setContentType("image/jpg");
OutputStream out = response.getOutputStream()
bute[] buffer = new byte[1024];
FileInputStream in = new FileInputStream("image/jpg"); // jpg的部分,自行截取本地文件的扩展名
while((int size = in.read(buffer)) > -1){
out.write(Arrays.copy(buffer, 0, size)); // Arrays.copy记不太清了,自己查下api吧
}
out.flush();

前端可以 <img src="该servlet的地址" />
其实可以改变reponse.setContentType的调用参数,输出各种文件,各种图片、pdf、word、excel、flash、and so on。前端用各种<object src="该servlet的地址" />输出展示即可
tmdniqusi
2010-11-28 · TA获得超过422个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:99.3万
展开全部
什么画笔画布 俺也没用过,不知道是否你编码设置还是对否还是对使用方法有问题。如果要紧紧显示个图片,为何不直接用输出流输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zidom
2010-12-01 · TA获得超过130个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:130万
展开全部
双缓冲?啊?这个地方是吗?不懂,好像只有在做动画的时候用过那个东西!
你这个地方的问题应该是在于你输出图片的时候,一个是要设置你输出的是mimeType,
在你的doGet方法最前面加上
response.setContentType("image/jpeg");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
二,在你的doGet方法最后
response.OutputStream.flush();
response.OutputStream.close();
试试吧,很久没有弄个这个了,但愿能帮你解决掉!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-11-28
展开全部
a
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zywhhw789
2010-11-28 · TA获得超过690个赞
知道小有建树答主
回答量:1036
采纳率:66%
帮助的人:345万
展开全部
没接触过这个 帮不了忙
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式