2012-04-24 38 views
3

我正在編寫代碼,我正在讀取數據庫中的blob圖像,並且想要在我的jsp頁面上顯示該圖像。將BufferedImage轉換爲img的問題

通過谷歌我找出解決方案,字節[]可轉換爲緩衝的圖像

,但我該如何使用緩存的JSP頁面上的圖片?

+0

你不需要'BufferedImage'可言。它服務於一個完全不同的目的(能夠操縱(調整大小,傾斜,裁剪等)圖像)。只需將'byte []'直接寫入'response.getOutputStream()',就可以通過tusar回答。 – BalusC 2012-04-24 14:53:33

+0

但我沒有使用servlet ...我使用Spring和Hibernate ...你能告訴我如何在jsp中使用response.getOutputStream當你使用Spring控制器時 – JOHND 2012-04-25 04:45:18

+0

@BalusC:感謝您提供關於BufferedImage的信息 – JOHND 2012-04-25 06:18:27

回答

2

最簡單的方法是發送一個servlet或不同的jsp的圖像。

如果您使用JSP,請注意只發送沒有任何html(或空白行)的二進制文件。像這樣的例子:

response.setContentType("image/png"); 
OutputStream sos = response.getOutputStream(); 
BufferedImage myImage = stuff.getImage(request.getParameter("id")); 
ImageIO.write(myImage, "png", sos); 
sos.flush(); 
sos.close(); 

(這裏使用javax.imageio.ImageIO中)

然後,你可以簡單地使用這樣的形象:

<img src="myservlet.jsp?id=somestuff"> 
2

我會建議寫一個servlet ImageProvider

<servlet> 
    <servlet-name>showMyImage</servlet-name> 
    <servlet-class>com.photo.gallery.ImageProvider</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>showMyImage</servlet-name> 
    <url-pattern>/showMyImage</url-pattern> 
</servlet-mapping> 

現在在JSP頁面中使用它:

<img src="showMyImage?imageFimeName=flowers.jpg"/> 

這裏去了doGet實施ImageProvider

public void doGet(HttpServletRequest request, HttpServletResponse response) { 
    /*Now you have the byte[] array by some way... 
    * Lets call it imageBytes[] */ 
    response.setContentType("image/jpeg"); 
    response.setContentLength(imageBytes.length); 
    response.getOutputStream().write(imageBytes); 
} 
+0

謝謝你這麼多 – JOHND 2012-05-04 14:54:56

相關問題