2013-02-15 30 views
3

從數據庫中的圖像,我需要根據從數據庫中的BLOB創建JSON。爲了得到團塊圖像,我用下面的代碼和展後在JSON數組:如何表示JSON

Statement s = connection.createStatement(); 
ResultSet r = s.executeQuery("select image from images"); 
while (r.next()) { 
    JSONObject obj = new JSONObject(); 
    obj.put("img", r.getBlob("image")); 
} 

我想返回一個JSON對象根據圖像斑點的每個圖像。我怎樣才能實現它?在JSON

+0

什麼是終極目標是什麼?在HTML頁面中顯示爲「」?你不能只是返回一個帶有一些圖像標識符的URL作爲請求參數,並且當實際請求URL時返回圖像作爲響應? – BalusC 2013-02-15 14:56:34

+0

BalusC,我需要生成每個r.getBlob(「圖像」)的URL,我不知道要做什麼。這將由移動應用程序通過json使用。 – 2013-02-15 14:58:00

+0

啊,你想通過JSON將圖像傳輸到移動設備?把它編碼爲Base64呢? – BalusC 2013-02-15 15:01:02

回答

5

二進制數據通常是最好在Base64 -encoded形式來表示。您可以使用標準Java SE提供的DatatypeConverter#printBase64Binary()方法對Base64編碼一個字節數組。

byte[] imageBytes = resultSet.getBytes("image"); 
String imageBase64 = DatatypeConverter.printBase64Binary(imageBytes); 
obj.put("img", imageBase64); 

另一邊只是Base64解碼它。例如。在Android中,您可以使用內置的android.util.Base64 API。

byte[] imageBytes = Base64.decode(imageBase64, Base64.DEFAULT); 
+0

非常好。謝謝BalusC。 ;-) – 2013-02-15 15:17:31

+0

不客氣。 – BalusC 2013-02-15 15:22:32

+0

使用小數據代碼非常好,但使用大數據,總是發生內存不足。任何想法來優化代碼以避免內存不足?通常,2000個項目用於轉換圖像。 – 2013-02-25 19:34:37