當前位置:首頁 » 安卓系統 » androidbitmap讀取

androidbitmap讀取

發布時間: 2024-03-04 18:02:20

㈠ Android Bitmap理解

參考:
Android Bitmap 詳解:關於 Bitamp 你所要知道的一切

Android Bitmap(點陣圖)詳解

圖片是由大量且有限個數的像素點組成。把一張圖片通過bitmap的方式創建到內存中,實際上就是在內存中創建了一個叫做Bitmap的對象,然後把 圖片所有像素 解碼後的數據存放在Bitmap對象裡面,Bitmap就擁有了圖片的寬高,透明度,顏色值等數據。所以Bitmap的創建是通過BitmapFactory.decodeXxx()。

Config是Bitmap類中的枚舉類。像素由ARGB四個顏色通道組成。Config描述點陣圖中像素的存儲方式。 這里的存儲方式,無非就是對顏色通道和用多大的容器(bit)來存儲的排列組合。所以config會影響圖片透明度,佔用內存大小,保存成文件的大小,圖片質量。
Config的字母表示該配置存儲的像素的顏色通道,數字表示對應通道的數據用多少位來存儲。

ALPHA_8:表示只存儲alpha通道,使用8bit(1位元組)的內存(容器)來存儲一個像素。
RGB_565:表示存儲RGB三個通道,分別使用5bit,6bit,5bit的內存(容器)來存儲一個像素。
ARGB_4444:表示存儲ARGB四個通道,每個通道都是以4bit的內存(容器)來存儲一個像素。
ARGB_8888:表示存儲ARGB四個通道,每個通道都是以8bit的內存(容器)來存儲一個像素。

所以,ARGB_8888配置佔用內存最大,圖片質量最高。
圖片壓縮的一個思路就是降低圖片的配置。

總內存 = 寬的像素數 × 高的像素數 × 每個像素點佔用的大小
註:
1 byte = 8 bit
1 KB = 1024 byte

㈡ 怎麼給bitmap賦值 android

Bitmap是Android系統中的圖像處理的最重要的類之一。用它可以獲取圖像文件信息,對圖像進行旋轉,剪切,放大,縮小等操作。

Bitmap代表一張點陣圖,使我們在開發中常用的資源,下面就對Bitmap進行簡單的介紹。

Bitmap的獲取方法:

1、使用BitmapDrawable

BitmapDrawable里封裝的圖片就是一個Bitmap對象,我們要把Bitmap包裝成BitmapDrawable對象,可以調用BitmapDrawable的構造方法:

BItmapDrawbale drawable = new BItmapDrawable(bitmap);

如果要獲取BitmapDrawable所包裝的Bitmap對象,則可調用BitmapDrawable的getBitmap()方法:

Bitmap bitmap = drawbale.getBitmap();

2、Bitmap提供了一些靜態方法來創建Bitmap對象(僅列舉幾個):

createBitmap(Bitmap source,int x,int y,int width,int height):從原點陣圖source的指定坐標(x,y)開始,從中挖取寬width,高heigtht的一塊出來,創建新的Bitmap對象。

createScaledBitmap(Bitmap source,int width,ing height,boolean fliter):對源點陣圖進行縮放,縮放稱寬width,高heigth的新點陣圖。

createBitmap(int width,int height,Bitmap.Config config):創建一個寬width,高height的可變的新點陣圖。

createBitmap(Bitmap source, int x,int y,int width,int height ,Matrix m,boolean fliter):從源點陣圖source的指定坐標(x,y)開始,挖取寬width,高height的一塊來,創建新的Bitmap對象,並按照Matrix指定的規則進行變換。

3、通過對資源文件的解析獲取Bitmap對象

在這里就要用到BitmapFactory這個工具類,提供的方法如下:

decodeByteArray(byte[] data, int offset,int length):從指定位元組數組的offset位置開始,將長度為length的位元組數據解析成Bitmap對象。

decodeFIle(String pathName):從pathName指定的文件中解析、創建Bitmap對象。

decodeFileDescriptor(FileDescriptor fd):用於從FileDescriptor對應的文件中解析、創建Bitmap對象。

decodeResource(Resource res,int id):用於根據給定的資源ID從指定的資源文件中解析、創建Bitmap對象。

decodeStream(InputStream is):用於從指定輸入流中介解析、創建Bitmap對象。

但是,在系統不斷的解析、創建Bitmap的過程中,可能會由於內存小或其他原因,導致程序運行時發生OutOfMemory錯誤。

為此,Android為Bitmap提供了內存回收方法:

void recycle():強制回收Bitmap對象。

還有用於判斷Bitmap 對象是否被回收的方法:

boolean isRecycle();

如果Android應用需要訪問系統相冊,都需要藉助BitmapFactory解析、創建Bitmap對象。

4 從安卓無憂中看bitmap的幾種例子,下面是載入bitmap的例子,可以看裡面的源碼


如果您對答案滿意,請您關注一下名字中微博。

㈢ android如何從SD卡讀取圖片文件轉化為bitmap

SDK 中有專門取SD卡路徑的靜態方法
public String getSDPath(){
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(Android.os.Environment.MEDIA_MOUNTED); //判斷sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();//獲取跟目錄
}
return sdDir.toString();
}

不要寫死路徑

㈣ android 讀取圖片流為空

直接用BitmapFactory.decodeFile(pathName);就可以讀取。
或者用你的方式,BitmapFactory.decodeStream(fosfrom);
而且你這種讀取方式也不對。你把一個圖片分成多次讀取,ByteArrayInputStream流里只保存了最後一份數據,怎麼可能是個完整的圖片。

㈤ android bitmap 從網路獲取圖片並處理問題 溢出

java中,JavaVM擁有自動管理內存的功能,Java的GC能夠進行垃圾回收,但是如果ImageView使用過多的Bitmap的話,經常會報OOM(內存溢出)。

造成內存溢出及解決方案:

  1. 使用BitmapFactory.decodeStream替代createBitmap方法

    原因是該方法直讀取圖片位元組,調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap。

  2. 使用壓縮讀取技術

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;

BitmapFactory.decodeFile(imageSdUri, options);

final int height = options.outHeight;

final int width = options.outWidth;

options.inSampleSize = 1;

int w = 320;

int h = 480;

h = w*height/width;//計算出寬高等比率

int a = options.outWidth/ w;

int b = options.outHeight / h;

options.inSampleSize = Math.max(a, b);

options.inJustDecodeBounds = false;

Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);


3.及時釋放Bitamp
Bitmap對象在不使用時,我們應該先調用recycle()釋放內存,然後才它設置為null.雖然recycle()從源碼上看,調用它應該能立即釋放Bitmap的主要內存,但是測試結果顯示它並沒能立即釋放內存。但是我它應該還是能大大的加速Bitmap的主要內存的釋放。

熱點內容
android獲取手機的ip 發布:2024-11-28 07:42:13 瀏覽:170
python打開文件窗口 發布:2024-11-28 07:36:13 瀏覽:555
cpu二級緩存的作用 發布:2024-11-28 07:36:12 瀏覽:1001
net資料庫控制項 發布:2024-11-28 07:32:58 瀏覽:99
我的世界國際服創建伺服器pc 發布:2024-11-28 07:20:53 瀏覽:773
編譯原理LR分析法pdf 發布:2024-11-28 07:17:41 瀏覽:264
安卓光遇版本怎麼看 發布:2024-11-28 06:29:52 瀏覽:871
oraclesql加密 發布:2024-11-28 06:29:15 瀏覽:901
圖片緩存工具 發布:2024-11-28 06:29:15 瀏覽:962
有文件夾刪不掉怎麼辦 發布:2024-11-28 06:22:50 瀏覽:526