2012年4月23日月曜日

AndroidでBitmapを回転させるには?

AndroidでBitmapを回転させるには?

// ビットマップの幅と高さ
int width = 240;
int height = 480;

// オリジナルのビットマップ作成
Bitmap bmpOrig = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

// 回転マトリックス作成(90度回転)
Matrix mat = new Matrix();
mat.postRotate(90);

// 回転したビットマップを作成
Bitmap bmp = Bitmap.createBitmap(bmpOrig, 0, 0, width, height, mat, true);


createBitmap()を二回使っているけど、1回目と2回目は引数が違うところがポイント。2回目でオリジナルのビットマップを回転させたビットマップを作っている。

この2回目のcreateBitmap()で感心したのは、元の画像を45度で回転させた場合でも描画領域がちゃんと広がっているところ。普通なら切れたりするはず。すばらしい。


ところで、初めに考えたのはImageView.setRotation()を使うことだったのだけど、これがまた・・・API Level 11以上だったので使えなかった_| ̄|○