我想知道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;
}
答案 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