2011-12-12 28 views
4

我必須使用json發送我的數據,並且必須在我的json中使用byte []發送圖像。現在,我可以得到位圖轉換使用代碼以下行的ByteArray:在JSON上放置byte [] android

selectedImageBitmap.compress(Bitmap.CompressFormat.JPEG, 100,stream); 
byte[] byteArray = stream.toByteArray(); 

,但我不能把一個JSON此字節數組。我正在使用android 2.1默認的Json對象。當我嘗試將byte []轉換爲JSONArray時,它會給我帶來內存不足的異常。我試圖把對象直接放在JsonObject中,它會在toString()(可能是對象的內存位置)中返回一個奇怪的十六進制字符串。

任何人都可以請幫我解決這個問題。有沒有一個標準的方式來在JSON中放置一個字節[]?

P.S:我最初嘗試使用base64。但這經常會導致內存不足,因爲我必須發送和接收的圖像很大,因此base64也很大!

回答

0

不存在這樣的方法,它接受這個字節轉換嘗試字節使用型鑄造

JSONArray jsonArray = new JSONArray();  
for(int i=0;i<byteArray.length;i++) { 
    jsonArray.put((int)byteArray[i]); 
} 
+1

我試過..但它導致了OutOfMemoryError .. !! – Khalil

2

對於大文件爲int值/圖片試圖通過大塊的基礎派在塊中的數據。創建圖像的bytearray下次發送小塊的字節數組發送下一個塊等等。

+2

你能給我舉個例子嗎? – Khalil