2014-10-19 98 views
0

如果圖像大小要在SD卡上佔用100KB,我必須從http服務器下載後壓縮位圖,如果它高達100 KB,則不要壓縮。知道SD卡上的位圖大小,然後將其保存在SD卡上

所以,我想知道SD卡上的位圖的大小,然後將其保存在SD卡上,以便我可以壓縮位圖,如有必要。 image.getRowHeight()* image.getHeight()給出的大小與file.length()不同。

+0

大多數圖像格式已經被壓縮,因此在大多數情況下再次進行壓縮是無用的。 – Henry 2014-10-19 06:54:47

+0

@亨利我有JPG格式的圖像? – 2014-10-19 08:46:21

+0

jpg已經壓縮。你可以嘗試用一些測試圖像再次壓縮它,沒有太多可以獲得。 – Henry 2014-10-19 15:47:46

回答

0

official android document所述,以下技術允許您在構建位圖之前讀取圖像數據的尺寸和類型(以及內存分配)。

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(getResources(), R.id.myimage, options); 
int imageHeight = options.outHeight; 
int imageWidth = options.outWidth; 

要查看文件大小以字節爲單位,使用File.length()

+0

我要知道字節的大小。高度和寬度有助於在分配時提供尺寸。 – 2014-10-19 08:47:59

+0

在這種情況下,請參閱最新的答案。 – JiTHiN 2014-10-19 12:56:23

0

檢查Content-Lenght頭字段使用HTTP客戶端的響應。

rfc2616

的Content-Length的實體頭字段指示 實體主體的大小,以字節爲單位的十進制數,發送到接收方,或在 HEAD方法的情況下, 已發送的實體主體的大小有請求成爲GET。

+0

簡單地使用內容長度是好的還是應該注意這一點? – 2014-10-19 08:48:58

+0

「Content-Lenght」的值保存了正在下載的圖像的大小,因此除非沒有'Content-Encoding:gzip,deflate'頭部,否則使用它是完全正確的。但不應該有圖像請求。 – biegleux 2014-10-19 09:13:22

+0

在我的情況下,我沒有在「內容長度」標題中獲得任何價值。 – 2014-10-19 13:54:31