将字节数组解码为已用Java压缩的位图

时间:2011-03-09 09:15:46

标签: java android bitmap compression bytearray

我正在以下列方式压缩位图

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 个答案:

答案 0 :(得分:6)

我没有意识到我的位图(来自Canvas对象)的背景是透明的。由于此位图只是白色背景上的黑线,因此黑色图像会压缩为JPEG,从而使图像呈现黑色背景。

我已经改变了

bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); 

bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out); 

它按预期工作。