2014-09-23 185 views
0

我自2天起就遇到了這個問題: 我想壓縮位圖(JPEG)。JPEG壓縮的尺寸與原來的尺寸相同

我在這裏和Google上發現了一些有用的信息,但沒有一個能正常工作。

我的JPEG文件位於資產中。我可以毫無問題地閱讀它,檢索所有信息。 當我壓縮它,我的byte []數組很好,但與decodeByteArray,大小是原來的相同。

這裏的代碼

InputStream in = assets.open(fileName); 


Config config = Bitmap.Config.RGB_565; 
Options options = new Options(); 

options.inPreferredConfig = config; 

Bitmap bitmap = BitmapFactory.decodeStream(in, null, options); 

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out); 
bitmap = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()),null,options); 

我不知道該怎麼辦。 預先感謝您的時間

+1

'我想壓縮位圖(JPEG)。位圖不是jpeg。這是什麼意思? – greenapps 2014-09-23 08:23:52

+0

對不起,我的位圖是從一個JPEG文件(不是PNG)從資產加載(因爲我知道一個PNG不能壓縮,我認爲有用的提及源是一個jpeg – Sirill 2014-09-23 10:25:08

+0

奇怪的是,由此產生的文件大小與原始文件的大小相等,你的壓縮質量爲50,這樣可以減小文件的大小,用15來嘗試。 – greenapps 2014-09-23 10:29:25

回答

1

解碼進行壓縮的反面:它將它變成原始像素數據。壓縮對於減少存儲和傳輸的文件大小非常有用,但是當圖像顯示時,它會在內存中解壓縮至與啓動時相同的大小。

如果要使原始像素數據更小,則需要降低分辨率。 ImgScalr庫將幫助你:它產生非常好的結果。

(但我不完全知道它是什麼你想要的目的。)

+0

ImgScalr +1 。這裏是一個鏈接到最新版本(4.2)在maven倉庫中:http://search.maven.org/#artifactdetails%7Corg.imgscalr%7Cimgscalr-lib%7C4.2%7Cjar – 2014-09-23 08:35:09