2012-03-22 6 views
0

Я пытаюсь преобразовать изображение в массив байтов и преобразовать массив байтов в изображение в Android Emulator. Первая часть работает нормально, но вторая часть не создает файл изображения в эмуляторе 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

Есть ли основания полагать, это будет работать (или неудачно) по-другому в эмуляторе, чем на телефоне или планшете? Если нет, это не имеет ничего общего с эмулятором. –

+0

вы можете попробовать @ Крис Уайт ответить? – Harshid

ответ

1

ваш вызов BitmapFactory.decodeByteArray(..) - этот метод возвращает объект Bitmap, но вы не назначая его ни к чему. Кроме того, необходимо изменить вызов пройти в фактической длине byte_img_data, а затем 200.

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

Однако, может ли decodeByteArray(..) обрабатывать сжатые потоки, я не знаю

Смежные вопросы