2017-05-24 81 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