Bitmapの使用について


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); //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)までの矩形領域を表す.このコードはthisをbmは、スクリーン上の(0,0)~(200)までの領域をスケーリングして描画する. 
canvas.drawBitmap(this.bm, new Rect(100, 100, 300, 300), new Rect(100, 100, 200, 200), null);

ここでこれをbmの(100100)~(300300)領域を取り出し、画面の(100100)~(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でも実現されており、詳細は補足されます.