【问题标题】:Decode byte array to bitmap that has been compressed in Java将字节数组解码为已在 Java 中压缩的位图
【发布时间】:2011-07-11 17:48:18
【问题描述】:

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

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 压缩。还是我误解了压缩的工作原理?

【问题讨论】:

    标签: java android bitmap compression bytearray


    【解决方案1】:

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

    我变了

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

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

    它按预期工作。

    【讨论】:

    • 不...您只需要使用较深的黑色即可。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多