Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jsp中显示BuffereImage_Java_Jsp_Bufferedimage - Fatal编程技术网

Java 在jsp中显示BuffereImage

Java 在jsp中显示BuffereImage,java,jsp,bufferedimage,Java,Jsp,Bufferedimage,实际上,我正在尝试使用jsp/struts2框架创建一个在线图像编辑器。我已经使用imageIO.write()方法来写入通过我创建的各种过滤器处理过的缓冲图像。 现在的问题是,我必须在同一页上显示该图像。到目前为止,我已经做了很多 { File imagefile = new File("C:/Users/Documents/NetBeansProjects/project/web/images/"+img+""); image = ImageIO.read(imagefile);

实际上,我正在尝试使用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应用程序,我不知道您为什么要将内容写入您的私有本地磁盘!(除此之外,您的文件路径是硬编码到NetBeans文件夹的,因此当您将应用程序部署到其他地方时,它们将无法工作)

因为图像本身不是页面,所以我将把代码放在一个简单的servlet中。该方法是放置代码的正确位置。但是,您需要将文件流式传输到浏览器,而不是写入硬盘上的文件

比如:

response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
ImageIO.write(img2, "jpg", out);
out.close()
response
是传递给
doGet()方法的
HttpServletResponse

在您的页面上,然后单击您的

如果需要处理不同的图像或确定要渲染的图像,则需要传递URL参数,如:

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


doGet()
方法中,检查
HttpServletRequest
中的URL参数

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

因为图像本身不是页面,所以我将把代码放在一个简单的servlet中。该方法是放置代码的正确位置。但是,您需要将文件流式传输到浏览器,而不是写入硬盘上的文件

比如:

response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
ImageIO.write(img2, "jpg", out);
out.close()
response
是传递给
doGet()方法的
HttpServletResponse

在您的页面上,然后单击您的

如果需要处理不同的图像或确定要渲染的图像,则需要传递URL参数,如:

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


doGet()
方法中,检查
HttpServletRequest
中的URL参数

对不起,我在上面犯了一个错误,我给出了我已经写入文件夹的同一个图像的相对路径。但是根据u,我应该将它写入浏览器,而不是一次又一次地写入文件夹@vishal如果图像是动态的并显示一些数据,那么在一个位置写入磁盘总是会导致用户看到其他人的图像。如果图像中没有任何东西是动态的,那么你为什么要一遍又一遍地创建它呢?@vishal是的,不知道你为什么这么惊讶。当浏览器遇到
标记时,它将发出HTTP请求并等待数据通过。当您通过JSP编写HTML时,您实际上也在做同样的事情。您没有将HTML输出到本地磁盘上的文件,但它是通过servlet的
HttpServletResponse
提供的
OutputStream
发送的。@jbx,实际上java和这些概念对我来说是一个全新的概念,我对它们不太熟悉,但是thanx非常感谢你的帮助..我已经改变了硬编码的绝对路径并实现了这个东西。它工作得很好,thanx.抱歉,我在上面犯了一个错误,我给出了我已写入文件夹的同一图像的相对路径..但是根据u,我应该将它写入浏览器,而不是一次又一次地写入文件夹@vishal如果图像是动态的并显示一些数据,那么在一个位置写入磁盘总是会导致用户看到其他人的图像。如果图像中没有任何东西是动态的,那么你为什么要一遍又一遍地创建它呢?@vishal是的,不知道你为什么这么惊讶。当浏览器遇到
标记时,它将发出HTTP请求并等待数据通过。当您通过JSP编写HTML时,您实际上也在做同样的事情。您没有将HTML输出到本地磁盘上的文件,但它是通过servlet的
HttpServletResponse
提供的
OutputStream
发送的。@jbx,实际上java和这些概念对我来说是一个全新的概念,我对它们不太熟悉,但是thanx非常感谢你的帮助..我已经改变了硬编码的绝对路径并实现了这个东西。它工作得很好,thanx..
ImageIO.write()
返回一个
布尔值
,它是
真的
?除此之外,jbx的解决方案通常是一种更好的方法。IMO:-)
ImageIO.write()
返回一个
布尔值,它是
真的吗?除此之外,jbx的解决方案通常是更好的方法