2017-05-24 54 views
0

我试图用JPG压缩函数压缩位图。压缩位图返回的字节总是相同的

这是我的一段代码:(即80〜50)

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
originalBitmap.compress(Bitmap.CompressFormat.JPEG, 80, out); 
byte[] newArray = out.toByteArray(); 
Bitmap compressed = BitmapFactory.decodeByteArray(newArray, 0, newArray.length); 

奇怪的行为是,如果我改变压缩因子“出”数组的大小会发生变化...但是“压缩”的位图总是保持与“originalBitmap”相同的字节数。

有人可以向我解释为什么?!?

预先感谢...

回答

2

一个Bitmap需要的字节量是:X * Y * D,其中:

  • X是宽度,以像素
  • Y是高度,以像素
  • D是位深度,以像素为单位,默认为4

Bitmap是从JPEG,PNG,WebP还是其他任何文件加载都没关系。字节数仅由分辨率(宽度乘以高度)和位深度决定。

因此,就你而言,你正在成功创建一个Bitmap,它的字节数与之前相同,只是输出有点模糊。

+0

好的。我明白你的意思!你能建议我一个压缩位图的好方法吗? – Blasco73

+0

@ Blasco73:我不知道“压缩位图”是什么意思。如果您的意思是“创建占用较少内存的较小位图”,请在原始的“位图”上使用'createScaledBitmap()'。 – CommonsWare

+0

我的意思是一个固定宽度和高度但压缩比可变的位图(但是是一个图像)! – Blasco73