在jsp中显示bufferedimage

时间:2013-11-05 16:39:56

标签: java jsp bufferedimage

实际上我正在尝试使用jsp / struts2框架创建一个在线图像编辑器。我已经使用imageIO.write()方法来编写已经通过我创建的各种过滤器处理过的缓冲图像。 现在的问题是我必须在同一页面上显示该图像。到目前为止,我做了很多。

 {
 File imagefile = new File("C:/Users/Documents/NetBeansProjects/project/web/images/"+img+"");
 image = ImageIO.read(imagefile);

 ImageFlipps imgflip=new ImageFlipps(image); /* image filter class that takes a bufferedimage and return a processed bufferedImage. */

 imgflip.setBufferedImages();
 BufferedImage img2= imgflip.vhIImageFlipps(); // returned buffered image.

 ImageIO.write(img2, "jpg", new File("C:/Users/Documents/NetBeansProjects/project/web/images/new.jpg")); // writing image to some specific folder.

  }

在同一页面的此代码下方,我试图使用图片标记显示保存的图像,但没有显示图像。

<img src="C:/Users/Documents/NetBeansProjects/project/web/images/new.jpg" alt="image not found" />

一个简单的逻辑,但没有工作....请帮助我...自从过去两周以来一直遇到这个问题。

1 个答案:

答案 0 :(得分:1)

不确定您的环境的其余部分(即您拥有的servlet或过滤器),但如果它是Web应用程序,我不知道您为什么要将内容写入私有本地磁盘! (除了您的文件路径被硬编码到NetBeans文件夹这样的事实,因此当您在其他地方部署应用程序时它们将无法工作)。

由于图像不是这样的页面,我会将您的代码放在一个简单的servlet中。 doGet()方法是放置代码的正确位置。但是,您需要将其流式传输到浏览器,而不是写入硬盘上的文件。

类似于:

response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
ImageIO.write(img2, "jpg", out);
out.close()

response是传递给HttpServletResponse方法的doGet()

在您的页面上,您的<img>标记应映射到路由到您的servlet的URL(通过web.xml映射)。所以像这样:

<img src="http://www.yoursite.com/yourapp/imageserv">

如果您需要处理不同的图像或识别要渲染的图像,则需要传递以下URL参数:

 <img src="http://www.yoursite.com/yourapp/imageserv?image=imageid">

doGet()方法中,您可以检查HttpServletRequest中的网址参数。