2012-03-22 135 views
0

我想將圖像轉換爲字節數組並將字節數組轉換回Android模擬器中的圖像。 第一部分工作正常,但第二部分不是在Android模擬器中創建圖像文件。如何將圖像轉換爲字節數組並將字節數組轉換爲圖像

請給我建議,如果有我的代碼的第二部分的任何修正。

以下是我的代碼。

public String GetQRCode() throws FileNotFoundException, IOException { 
    /* 
    * In this function the first part shows how to convert an image file to 
    * byte array. The second part of the code shows how to change byte array 
    * back to an image. 
    */ 
    Bitmap bitmap = BitmapFactory.decodeFile("sdcard/Download/QR.jpg"); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 60, baos); 
    byte[] byte_img_data = baos.toByteArray(); 

    byte[] buf = new byte[200]; 

    // Second Part: Convert byte array back to an image 

    Bitmap bitmap2 = BitmapFactory.decodeByteArray(byte_img_data, 0, 200); 

    ByteArrayOutputStream img= new ByteArrayOutputStream(); 

    Bitmap imageFile= BitmapFactory.decodeFile("sdcard/Download/QR3.jpg"); 

    String abc = buf.toString(); 
    return abc; 
} 
+0

有什麼理由相信這在模擬器中的工作(或失敗)會不同於手機或平板電腦?如果沒有,這與模擬器無關。 – 2012-03-22 13:42:46

+0

你可以試試@Chris White的答案嗎? – Harshid 2013-04-18 07:20:58

回答

1

您到BitmapFactory.decodeByteArray(..)通話 - 這個方法返回一個位圖對象,但你不是分配給什麼。你還需要改變通話中的byte_img_data實際長度來傳遞,而不是200

Bitmap bitmap2 = BitmapFactory.decodeByteArray(byte_img_data, 0, byte_img_data.length); 

然而,decodeByteArray(..)是否可以處理壓縮碼流,我不知道