2011-05-20 41 views
1

我遇到了一個問題,我無法在GWT中顯示來自我的數據庫的圖像,即使我證明了我可以將圖像保存在我的計算機中。以下是代碼:如何在gwt中管理Mysql圖像響應?

 byte[] bytes = new byte[8096]; 
     int len = 0; 

     while ((len = in.read(bytes))> 0) 
     { 
      if(!fichero.exists()) 
      { 
       out.write(bytes, 0, len); 
      } 
     } 

     out.flush(); 
     out.close(); 
     in.close(); 
     //byte[] bytes = IOUtils.toByteArray(in); 

     String base64 = Base64Utils.toBase64(bytes); 
     //base64 = "data:image/png;base64,"+base64; 
     base64 = "data:image/gif;base64,"+base64; 
     return base64; 

     } 
     else 
     { 
      return "http://cracktouch.com/wp-content/uploads/2011/02/Run-Like-Hell-Deluxe.png"; 
     } 

此代碼位於GreetingServiceImpl類中。 「in」是一個輸入流,其圖像是正確的,因爲我可以將圖像保存在我的計算機中,但當我使用字符串base64時,無法在GWT中顯示它: Image image = new Image(base64) ; contenido.add(image); 有什麼建議嗎?

+0

嘗試提供更多信息以獲得更好的答案。您是否看到任何錯誤消息? 「字節」是圖像,對嗎?出了什麼問題(你正在將未編碼的圖像寫入輸出,然後對圖像進行編碼)?這看起來很奇怪。 – Stefan 2011-05-20 22:34:04

回答

1

bytes數組是固定大小,比圖像數據大 - 所以末尾有一些未使用的0。

調用Base64Utils.toBase64(bytes)將包含未使用數據的整個數組轉換爲字符串。

修剪數組或使用Base64實現,您可以指定輸入數據的大小。

+0

這就是我所做的,但它不起作用 – CroLeX 2011-05-22 16:53:07