gpt4 book ai didi

java - 在jsp中显示缓冲图像

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:16 25 4
gpt4 key购买 nike

实际上我正在尝试使用 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" />

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

最佳答案

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

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

所以类似:

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

responseHttpServletResponse传递给您的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 中的 URL 参数。

关于java - 在jsp中显示缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com