我正在用以下方式压缩位图
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 压缩。还是我误解了压缩的工作原理?
最佳答案
我没有意识到我的位图(来自 Canvas 对象)的背景是透明的。由于此位图只是白色背景上的黑色线条,因此黑色图像是由于压缩为 JPEG 使图像具有黑色背景。
我变了
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out);
到
bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out);
它按预期工作。
关于java - 将字节数组解码为已在 Java 中压缩的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5243547/