關於使用BitMap的小結

2021-06-17 17:44:57 字數 2044 閱讀 9046

建立bitmap:

bitmap bm = null;

bm = bitmap.createbitmap(w, h, config.alpha_8); //每個畫素佔乙個位元組(8位)

bm = bitmap.createbitmap(w, h, config.argb_4444); //兩個位元組

bm = bitmap.createbitmap(w, h, config.argb_8888); //四個位元組

bm = bitmapfactory.decodefile(path); //從檔案載入成bitmap,如/sdcard/logo.png

bm = bitmapfactory.decoderesource(getresources(

), r.drawable.test); 指的是/res/drawable-*/test.jpg或png等等

bm = (

(bitmapdrawable)getresources(

).getdrawable(r.drawable.show)

).getbitmap(

); //未測試

擷取bitmap:

bitmap sbm = bitmap.createbitmap(this.bm, 0, 0, w, h); //表示從(0,0)處開始擷取寬為w,高為h的範圍

拉伸bitmap:

displaymetrics dm = getresources(

).getdisplaymetrics(

);

int mscreenwidth = dm.widthpixels; //獲取螢幕寬

int mscreenheight = dm.heightpixels; //獲取螢幕長度

bitmap lbm = bitmap.createscaledbitmap(this.bm, mscreenwidth, mscreenheight, true

);

每次 createbitmap ,都會分配新的記憶體,帶來資源的消耗,所以用 bitmap 的 createbitmap 雖然簡單方便,但是不是最優方法。介紹乙個比較好點的方法,不用建立新的 bitmap ,用 canvas 在畫的時候直接縮放或者剪下。

canvas.drawbitmap(this.bm, null, new rect(

0, 0, 200, 200

), null

);

這裡的 rect 物件表示乙個矩形區域,從 (0,0) 到 (200,200) 之間的矩形區域。這段**將把this.bm縮放並繪製到螢幕上的 (0,0) 到 (200,200) 之間的區域。

canvas.drawbitmap(this.bm, new rect(

100, 100, 300, 300

), new rect(

100, 100, 200, 200

), null

);

這裡將this.bm的 (100,100) 到 (300,300) 區域拿出來,自動縮放並畫到螢幕的 (100,100) 到 (200,200) 區域。

還可以通過matrix縮放:

matrix matrix = new matrix(

);matrix.postscale(

1.0f, 1.0f); //這裡寬和高都是1倍,等於沒縮放

bitmap newbtm = bitmap.createbitmap(btm, 0, 0, this.btm.getwidth(

), this.btm.getheight(

), matrix, true

);

旋轉bitmap:

也是通過maxtrix實現的,詳情待補。

關於Bitmap的旋轉

在原來的專案裡有表盤指標旋轉的需求,做出來的效果被我查出乙個小小bug 先貼 1 2 34 5 6 78 9 1011 1213 1415 1617 1819 2021 public void setrotate float degrees stick setimagebitmap ns rotat...

Bitmap使用分享

這篇文章裡面只是想總結一下工作中使用bitmap遇到的一些使用情況。bitmap翻譯過來就是 位圖 對於bitmap更多的優化問題吧!bitmap類有乙個方法recycle 從方法名可以看出是 的意思。雖然有gc,但是有時候 還是不盡如人意,這時候我們就需要用到recycle 我們手動來釋放bitm...

bitmap與2 bitmap使用總結

bitmap是一種簡單的資料結構,但在儲存空間壓縮方面卻使用廣泛。bitmap就是用乙個bit位來標記某個元素是否存在 1表示存在,0表示不存在 而2 bitmap就是用兩個bit為來標記某個元素出現的次數 00出現0次,01出現1次,10出現2次及其以上,11無意義。2 bitmap在記憶體中的表...