【问题标题】:Converting Bitmap to ByteArray and back to Bitmap not working将位图转换为字节数组并返回位图不起作用
【发布时间】:2015-06-10 04:10:05
【问题描述】:

我尝试将 Bitmap 转换为 byteBuffer,然后使用以下代码将其转换回 Bitmap。没有发生错误,但 ImageView 无法在屏幕上显示任何内容。图片为 640 X 480 RGB jpeg。

    Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().toString()+"/tower.jpg");

    ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
    bitmap.copyPixelsToBuffer(byteBuffer);
    byte[] byteArray = byteBuffer.array();

    Bitmap final_bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    ((ImageView) findViewById(R.id.imageView)).setImageBitmap(final_bitmap);

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    尝试用这种方式将位图转换为字节数组:

    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] byteArray = stream.toByteArray();
    

    和你一样将字节数组转换为位图

    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    

    【讨论】:

    • 这个方法我真的试过了,效果很好。但是为什么我的第一种方法不起作用?
    • @Pierrew 如果你使用 copyPixelsToBuffer,我认为你需要使用 copyPixelsFromBuffer() 来恢复它。
    • Stream除了像素数据外,还包含图像大小等信息(元数据)。
    猜你喜欢
    • 2018-05-06
    • 2010-09-26
    • 2013-01-14
    • 2013-07-29
    • 2012-11-09
    • 2011-06-26
    • 2016-10-24
    相关资源
    最近更新 更多