2012-03-22 150 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(..)是否可以处理压缩码流,我不知道

相关问题