1. 程式人生 > >Android圖片的壓縮和Bitmap轉化為String傳輸

Android圖片的壓縮和Bitmap轉化為String傳輸

一.圖片佔用記憶體的計算方法
單位:bit(位),byte(位元組)
二進位制數系統中,每個0或1就是一個位(bit),位是資料儲存的最小單位。其中8bit就稱為一個位元組(Byte)。
計算機中的CPU位數指的是CPU一次能處理的最大位數。例如32位計算機的CPU一次最多能處理32位資料。

Android中的四種色彩格式:
1:ALPHA_8 佔1個位元組(此時圖片只有alpha值,沒有RGB值,一個畫素佔用一個位元組)
2:ARGB_4444 佔2個位元組(這種格式的圖片,看起來質量太差,已經不推薦使用。alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各佔4個bites,共16bites,即2個位元組)
3:ARGB_8888 佔4個位元組(alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各佔8個bites,共32bites,即4個位元組這是一種高質量的圖片格式,電腦上普通採用的格式。它也是Android手機上一個BitMap的預設格式。)
4:RGB_565  佔2個位元組(一個畫素佔用2個位元組,沒有alpha(A)值,即不支援透明和半透明,Red(R)值佔5個bites ,Green(G)值佔6個bites  ,Blue(B)值佔5個bites,共16bites,即2個位元組.對於沒有透明和半透明顏色的圖片來說,該格式的圖片能夠達到比較的呈現效果,相對於ARGB_8888來說也能減少一半的記憶體開銷。因此它是一個不錯的選擇。另外我們通過android.content.res.Resources來取得一個張圖片時,它也是以該格式來構建BitMap的.
從Android4.0開始,該選項無效。即使設定為該值,系統任然會採用 ARGB_8888來構造圖片)
(注:ARGB指的是一種色彩模式,裡面A代表Alpha,R表示red,G表示green,B表示blue,其實所有的可見色都是紅綠藍組成的,所以紅綠藍又稱為三原色。
ARGB分別是指:透明度 紅色 綠色 藍色)


Android中計算一張圖片所佔記憶體大小方法:圖片長*寬*每個畫素所佔位元組數(圖片的長寬要以畫素為單位:px)
在Android4.0之前,Bitmap的記憶體是分配在Native堆中,呼叫recycle()可以立即釋放Native記憶體。
從Android4.0開始,Bitmap的記憶體就是分配在dalvik堆中,即JAVA堆中的,呼叫recycle()並不能立即釋放Native記憶體,等gc。但是呼叫recycle()也是一個良好的習慣。
二.圖片的壓縮
幾個概念常識:
2.1 圖片儲存為file時候的大小和其在流的形式的時候大小是一樣的,轉化為Bitmap也就是“點陣圖”時候明顯是要比前倆大得多。
2.2 Android中BitmapFactory.Options的理解:可以檢視:http://blog.csdn.net/haozipi/article/details/47183543?ref=myread,他寫的一系列的關於Options的文章,很有用
2.3 在實際開發中,有時候我們需求將檔案轉換為字串,然後作為引數進行上傳:參照:http://blog.csdn.net/jdsjlzx/article/details/44228935中具體操作
點陣圖Bitmap轉成字串string與String字串轉換為bitmap圖片格式;(在即時通訊中的表情因為很小就可以用這種方法來實現)
將圖片檔案轉化文String;
2.4  Android圖片壓縮分為“質量壓縮”和“尺寸壓縮”或者叫“取樣率壓縮”,其中前者的特點為:改變圖片的質量,使存的file的大小變小從而帶來上傳時候檔案變小。但是再次載入到記憶體中大小還是不變依然很大(和之前沒壓縮之前一樣大);後者的特點為:
圖片的畫素減少了載入到記憶體中肯定較少了,從而避免了oom;

相關推薦

Android圖片壓縮Bitmap化為String傳輸

一.圖片佔用記憶體的計算方法 單位:bit(位),byte(位元組) 二進位制數系統中,每個0或1就是一個位(bit),位是資料儲存的最小單位。其中8bit就稱為一個位元組(Byte)。 計算機中的CPU位數指的是CPU一次能處理的最大位數。例如32位計算機的CPU一次最多能

Android圖片壓縮(質量壓縮尺寸壓縮Bitmap成字串上傳

在網上調查了圖片壓縮的方法並實裝後,大致上可以認為有兩類壓縮:質量壓縮(不改變圖片的尺寸)和尺寸壓縮(相當於是畫素上的壓縮);質量壓縮一般可用於上傳大圖前的處理,這樣就可以節省一定的流量,畢竟現在的手機拍照都能達到3M左右了,尺寸壓縮一般可用於生成縮圖。兩種方法都實裝在了我的專案中,結果卻發現在質

Android圖片壓縮(質量壓縮尺寸壓縮Bitmap成字符串上傳

puts 我們 npr 工具 follow doc eth exce eas 在網上調查了圖片壓縮的方法並實裝後,大致上可以認為有兩類壓縮:質量壓縮(不改變圖片的尺寸)和尺寸壓縮(相當於是像素上的壓縮);質量壓縮一般可用於上傳大圖前的處理,這樣就可以節省一定的流量,畢竟現

Android圖片壓縮(質量壓縮尺寸壓縮)&Bitmap成字串上傳

在網上調查了圖片壓縮的方法並實裝後,大致上可以認為有兩類壓縮:質量壓縮(不改變圖片的尺寸)和尺寸壓縮(相當於是畫素上的壓縮);質量壓縮一般可用於上傳大圖前的處理,這樣就可以節省一定的流量,畢竟現在的手機拍照都能達到3M左右了,尺寸壓縮一般可用於生成縮圖。兩種方法都實裝在了我的專案中,結果卻發現在質量壓縮的模組

Android 圖片壓縮的一些小技巧,以及bitmapbyte[]之間的轉換

對於獲取到的圖片進行壓縮然後上傳,這個事情還是很重要的而且是很實用的。 public byte[] compressBitmap(Bitmap bitmap) { ByteArrayOutputStream baos = null; try {

Android圖片壓縮(質量壓縮尺寸壓縮 File, StreamBitmap

/** * Returns the minimum number of bytes that can be used to store this bitmap's pixels. * * <p>As of {@link android.os.Build.VERSIO

Android圖片壓縮的兩個開源庫:LubanCompressor

Luban https://github.com/Curzibn/Luban Luban,也稱魯班。該庫作者一針見血的提出當前圖片壓縮處理的一些問題:單純對圖片進行裁切,壓縮已經有很多文章介紹。但是裁切成多少,壓縮成多少卻很難控制好,裁切過

bitmap的六種壓縮方式,Android圖片壓縮

本文轉載自:http://blog.csdn.net/harryweasley/article/details/51955467 感謝大神總結。 Android中圖片是以bitmap形式存在的,那麼bitmap所佔記憶體,直接影響到了應用所佔記憶體大小,首先要知道bit

Android 圖片選擇拍照(剪輯)及壓縮問題 工具類

圖片選擇和拍照在開發過程中,會遇到不少坑: 1.版本4.4以後選擇圖片後不會返回絕對路徑,但返回Uri,要再查詢一次 2.去剪輯時,設定了true的話直接返回bitmap,可能會很佔記憶體,有些機子會掛掉(OOM)或者不會返回 3.圖片未更好的壓縮,應該做到寬高比壓縮後

Android有效避免程式OOM-圖片壓縮三級快取

前言 我們都知道現在的手機應用APP真的是給我們的生活帶來了巨大的便利,應用中的圖片也是精美絕倫特別好看,並且隨著科技的進步,相機的解析度也越來越高了,手機拍出來的照片可能達到十幾兆很正常,圖片這麼大,在實際的開發過程中,還經常會遇到圖片的載入等

Android圖片壓縮(質量壓縮尺寸壓縮

圖片有以下存在形式: 1.檔案形式(即以二進位制形式存在於硬碟上) 2.流的形式(即以二進位制形式存在於記憶體中) 3.Bitmap形式 這三種形式的區別: 檔案形式和流的形式對圖片體積大小

Flex 圖片文字化為BitmapData資料

xmlns:s="library://ns.adobe.com/flex/spark"  xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="group1_creationCompleteHandler(event)">  <fx

Android效能優化】Android圖片載入方案--Bitmap的記憶體管理優化方案

如果你覺得對你有幫助的話,希望可以star/follow一下喲,我會持續保持更新。 寫在前面:筆者的上一篇博文有提到過,如果不恰當的使用Bitmap,很容易造成OOM。這篇博文就來談談應該如何正確的管理Bitmap的記憶體,以及優化策略。

Android 圖片壓縮的方法大全

方法 nal ons arr reset 註意 you 固定 .com public static Bitmap revitionImageSize(String path) throws IOException { BufferedInputStream in

34模塊-zip【文件壓縮和解壓、圖片壓縮編輯】

rotate border title onclick scale max line htm port Zip模塊管理文件壓縮和解壓,通過plus.zip可獲取壓縮管理對象。比較常用的就是 對圖片進行壓縮、轉碼、旋轉操作了 <!DOCTYPE html><

【Java】ArrayList<String>化為String陣列問題

Java的容器類Collections中toArray()方法,可以把諸如ArrayList<String>的動態陣列、不定長轉化靜態陣列、定長陣列String[] 但是,如下的轉化方式是錯誤的。 [java]&nbs

java Stringint int化為String

  String轉int String str = "123"; int a = Integer.parseInt(str); System.out.println(a); Integer b = Integer.valueOf(str); System.out.println(b); i

Android圖片壓縮,自己編譯libjpeg

之前的部落格提到過關於圖片壓縮的方法: Android 圖片壓縮,Bitmap優化 基於此so庫寫的一個圖片壓縮框架:https://github.com/JavaNoober/Light Android原生的壓縮方法,不在乎兩種:通過設定simpleSize根據圖片尺寸壓縮

【FAQ問題記錄】ArrayList化為String[ ]陣列的問題。

 我們都知道ArrayList 提供了轉化為陣列的方法toArray() public Object[] toArray() { return Arrays.copyOf(elementData, size); } 在專案中我們需要將ArrayList&l

android圖片壓縮的三種方式

為了避免oom的出現,幾乎每個應用都會對大圖進行壓縮,我現在手頭做的產品就有很多地方用到,以前封裝工具類的時候,都是在網上找東找西,然後拼拼湊湊,有效果就行了,一直用的迷迷糊糊,這幾天工作比較閒,正好系統的總結梳理一下圖片壓縮方式: 圖片壓縮現在常見的有三種方式: 1、等比壓縮,等