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
没有显示原图片 显示的是一张黑色的图片 怎么改 谢谢大家 展开
//双缓冲画笔
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
没有显示原图片 显示的是一张黑色的图片 怎么改 谢谢大家 展开
展开全部
。。。双缓冲画布 对于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的地址" />输出展示即可
双环冲等于两张图片,前面的图片会先显示出去(直接输出),直到背后的图片准备好(在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的地址" />输出展示即可
展开全部
什么画笔画布 俺也没用过,不知道是否你编码设置还是对否还是对使用方法有问题。如果要紧紧显示个图片,为何不直接用输出流输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
双缓冲?啊?这个地方是吗?不懂,好像只有在做动画的时候用过那个东西!
你这个地方的问题应该是在于你输出图片的时候,一个是要设置你输出的是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();
试试吧,很久没有弄个这个了,但愿能帮你解决掉!
你这个地方的问题应该是在于你输出图片的时候,一个是要设置你输出的是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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没接触过这个 帮不了忙
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询