Androidでリソースの画像を角丸に変換するやり方メモ

// リソースからbitmapを作成
Bitmap image = BitmapFactory.decodeResource(context.getResources(), R.drawable.image);

// 画像サイズ取得
int width  = image.getWidth();
int height = image.getHeight();

// リサイズ後サイズ
int w = 100;
int h = 100;

// 切り取り領域となるbitmap生成
Bitmap clipArea = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

// 角丸矩形を描写
Canvas c = new Canvas(clipArea);
c.drawRoundRect(new RectF(0, 0, w, h), 10, 10, new Paint(Paint.ANTI_ALIAS_FLAG));

// 角丸画像となるbitmap生成
Bitmap newImage = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);

// 切り取り領域を描写
Canvas canvas = new Canvas(newImage);
Paint paint = new Paint();
canvas.drawBitmap(clipArea, 0, 0, paint);

// 切り取り領域内にオリジナルの画像を描写
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(image, new Rect(0, 0, width, height), new Rect(0, 0, w, h), paint);

// viewにset
ImageView imageView = (ImageView)context.findViewById(R.id.imageview);
imageView.setImageDrawable(new BitmapDrawable(newImage));