Декодируйте массив байтов в bitmap, который был сжат в Java
я сжимаю растровое изображение следующим образом
Bitmap bmpSig = getMyBitMap();
int size = bmpSig.getWidth() * bmpSig.getHeight();
ByteArrayOutputStream out = new ByteArrayOutputStream(size);
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out);
byte[] bytSig = out.toByteArray();
затем я пытаюсь отобразить изображение в Android ImageView из массива байтов. Когда я это делаю, я получаю изображение, которое полностью черное изображение.
ImageView myImg = (ImageView) findViewById(R.id.img_view);
myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length));
Я предполагаю, что это потому, что я пропустил шаг перед BitmapFactory.decodeByteArray (), чтобы отменить сжатие jpeg. Или я неправильно понял, как работает сжатие?
1 ответов
Я не понимал, что фон моего растрового изображения (из объекта Canvas) был прозрачным. Поскольку это растровое изображение - просто черные линии на белом фоне, черное изображение должно сжиматься в JPEG, придавая изображению черный фон.
Я изменил
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out);
to
bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out);
и он работает, как ожидалось.