1

実際、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" />

単純なロジックですが、機能していません....助けてください..この問題に2週間前から悩まされています。

4

1 に答える 1

1

環境の残りの部分がどのように見えるか (つまり、どのようなサーブレットやフィルターを使用しているか) はわかりませんが、それが Web アプリケーションである場合、プライベート ローカル ディスクに書き込みを行っている理由がわかりません。(ファイル パスが NetBeans フォルダーにハード コードされているため、アプリケーションを別の場所にデプロイした瞬間には機能しません)。

画像自体はページではないため、コードを単純なサーブレットに入れます。メソッドは、コードを配置するのdoGet()に適した場所です。ただし、ハード ディスク上のファイルに書き込む代わりに、それをブラウザーにストリーミングする必要があります。

次のようなものです:

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

はメソッドresponseHttpServletResponse渡されますdoGet()

ページ上で、<img>タグは (web.xml マッピングを介して) サーブレットにルーティングする URL にマップする必要があります。だから、このようなもの:

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

さまざまな画像を処理したり、レンダリングする画像を特定したりする必要がある場合は、次のような URL パラメーターを渡す必要があります。

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

そして、あなたのdoGet()メソッドでは、HttpServletRequest.

于 2013-11-05T16:47:25.183 に答える