2017-09-05 12 views
0

我想知道如果位图的内存和字节[]有连接? jpeg文件是28kb,但是当我将图像文件加载到位图时,我得到位图的字节为200 * 1204字节。为什么是这样?如果我更改位图(A)并将其压缩为byte [](字节[]长度为280 * 1024字节),然后从byte [] final创建位图(B),则得到字节[]从位图(B),但字节[]。长度不是280 * 1024字节 - 为什么? 我找不到任何文章。谁能解释这一点?谢谢。位图的内存和字节[]有连接吗?和jpeg文件大小与字节[]

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

我认为一旦你的图像加载到一个位图对象,一些格式/压缩特性可能是在尺寸看到变化的原因。如果压缩位图,则会更改数据 - 所以字节数组应该具有不同的长度。

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

Android - Reduce image file size

Loading Large Bitmaps Efficiently

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

+0

感谢。我会用另一种方式来解决这个问题。 – empt

相关问题