建立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在記憶體中的表...