Как преобразовать изображение в байтовый массив и преобразовать обратно байтовый массив в изображение - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь преобразовать изображение в байтовый массив и преобразовать обратно байтовый массив в изображение в эмуляторе 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; 
}

1 Ответ

1 голос
/ 22 марта 2012

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

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

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

...