Bitmap的内存和byte []是否有连接?和byte []的jpeg文件大小

时间:2017-09-05 02:36:09

标签: android bitmap

我想知道Bitmap的内存和byte []是否有连接?并且jpeg文件是28kb,但是当我将图像文件加载到位图时,我得到位图的字节,它是200 * 1204字节。为什么会这样?

如果我更改位图(A)并将其压缩为byte [](字节[]长度为280 * 1024字节)然后从byte [] final创建位图(B),我从中获取byte []位图(B)但字节[]。长度不是280 * 1024字节 - 为什么? 我无法找到任何文章。谁能解释一下?感谢。

 byte[] finalData = bitmapUtil.getScaledImageBytes(originBitmap,BitmapUtil.MAX_IMAGE_DATA_LENGTH); (finalData.length 280 * 1024)
originBitmap = BitmapFactory.decodeByteArray(finalData,0,finalData.length);
byte[] now = bitmapUtil.bitmap2Byte(originBitmap); (now.length 400 * 1024)

public byte[] bitmap2Byte(Bitmap bitmap) throws IOException {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,bos);
    byte[] data = bos.toByteArray();
    bos.close();
    return data;
}

1 个答案:

答案 0 :(得分:0)

我认为,一旦将图像加载到Bitmap对象,某些格式/压缩属性可能是您看到的大小变化的原因。如果压缩位图,则更改数据 - 因此字节数组应该具有不同的长度。

关于一些阅读,它并不完全是你想要的,但也许这些可以帮助:

Android - Reduce image file size

Loading Large Bitmaps Efficiently

Strange out of memory issue while loading an image to a Bitmap object