我正在以下列方式压缩位图
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压缩。或者我误解了压缩是如何工作的?
答案 0 :(得分:6)
我没有意识到我的位图(来自Canvas对象)的背景是透明的。由于此位图只是白色背景上的黑线,因此黑色图像会压缩为JPEG,从而使图像呈现黑色背景。
我已经改变了
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out);
到
bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out);
它按预期工作。