Android中圖片是以bitmap形式存在的,那么bitmap所占內存,直接影響到了應用所占內存大小,首先要知道bitmap所占內存大小計算方式:
圖片長度 x 圖片寬度 x 一個像素點占用的字節數
以下是圖片的壓縮格式:

其中,A代表透明度;R代表紅色;G代表綠色;B代表藍色。
ALPHA_8
表示8位Alpha位圖,即A=8,一個像素點占用1個字節,它沒有顏色,只有透明度
ARGB_4444
表示16位ARGB位圖,即A=4,R=4,G=4,B=4,一個像素點占4+4+4+4=16位,2個字節
ARGB_8888
表示32位ARGB位圖,即A=8,R=8,G=8,B=8,一個像素點占8+8+8+8=32位,4個字節
RGB_565
表示16位RGB位圖,即R=5,G=6,B=5,它沒有透明度,一個像素點占5+6+5=16位,2個字節
我是用的小米手機2s來測試的,從sd卡取出一個照片,如下所示:
bit = BitmapFactory.decodeFile(Environment .getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/test.jpg"); Log.i("wechat", "壓縮前圖片的大小" + (bit.getByteCount() / 1024 / 1024) + "M寬度為" + bit.getWidth() + "高度為" + bit.getHeight());出來的log是:

將取得的bitmap進行壓縮,下面開始說,bitmap的幾種壓縮方式。
1.質量壓縮
ByteArrayOutputStream baos = new ByteArrayOutputStream(); int quality = Integer.valueOf(editText.getText().toString()); bit.compress(CompressFormat.JPEG, quality, baos); byte[] bytes = baos.toByteArray(); bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); Log.i("wechat", "壓縮后圖片的大小" + (bm.getByteCount() / 1024 / 1024) + "M寬度為" + bm.getWidth() + "高度為" + bm.getHeight() + "bytes.length= " + (bytes.length / 1024) + "KB" + "quality=" + quality);其中quality是從edittext獲取的數字,可以從0 主站蜘蛛池模板: 巨野县| 天门市| 远安县| 合川市| 东宁县| 固阳县| 巴青县| 莱芜市| 祁门县| 三原县| 赣州市| 吴川市| 巨野县| 舒兰市| 仙居县| 瓦房店市| 尚志市| 庐江县| 友谊县| 宜兰县| 张掖市| 祁阳县| 成安县| 贵溪市| 海兴县| 保靖县| 哈密市| 固阳县| 公主岭市| 通许县| 塘沽区| 枝江市| 旺苍县| 澄迈县| 云阳县| 莱西市| 青河县| 宜阳县| 淮滨县| 平谷区| 靖江市|