Android・・・画像の切り抜き処理 [Android]
Androidで画像にマスク処理を施し、星形やハートなどに写真を加工するの作ってみた。
よくあるのは正方形、長方形、円などの画像表示。これ以外の形で表示してみたい。
考え方は円を作るときに行う切り抜きで作った。円を作るには他にも方法はあるが別の機会に説明ということで。
まず、以下の画像を用意する。
①元画像
②切り抜く型画像
1.については説明することはないので割愛。2.はイメージとしてはお弁当などに使用する型抜きの道具があるがそれを画像にしたイメージと思って欲しい。
上記の画像を用意したら後は元画像の上から型で切り抜けば出来上がり!
試してみると切り抜いた周りのざらつきもほとんどなく綺麗に出来上がった。
実装を備忘録として下記に示す。
-----------------------------------------------------------------------
1.元画像、切り抜き用画像の用意
-----------------------------------------------------------------------
Bitmap original = BitmapFactory.decodeFile(元画像ファイルPATH);
Bitmap mask1 = BitmapFactory.decodeFile(切り抜き画像ファイルPATH);
切り抜き画像を元画像のサイズにリサイズする。
Bitmap mask2 = Bitmap.createScaledBitmap(mask1, original.getWidth(), original.getHeight(), false);
-----------------------------------------------------------------------
2.切り抜いた画像の器を作成
-----------------------------------------------------------------------
Bitmap bitmap = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
これで元画像と同じサイズの単なる器ができた。
-----------------------------------------------------------------------
3.元画像から切り抜き開始
-----------------------------------------------------------------------
1.と2.の処理で画像の用意と切り抜いた後の画像を設定する器ができたので最後に切り抜きを行なう。
Canvas tempCanvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
tempCanvas.drawBitmap(original, 0, 0, null);
tempCanvas.drawBitmap(mask2, 0, 0, paint);
paint.setXfermode(null);
以上でbitmapに切り抜かれた画像情報が設定されたので後は表示させたいImageViewなどに設定するばいい。
よくあるのは正方形、長方形、円などの画像表示。これ以外の形で表示してみたい。
考え方は円を作るときに行う切り抜きで作った。円を作るには他にも方法はあるが別の機会に説明ということで。
まず、以下の画像を用意する。
①元画像
②切り抜く型画像
1.については説明することはないので割愛。2.はイメージとしてはお弁当などに使用する型抜きの道具があるがそれを画像にしたイメージと思って欲しい。
上記の画像を用意したら後は元画像の上から型で切り抜けば出来上がり!
試してみると切り抜いた周りのざらつきもほとんどなく綺麗に出来上がった。
実装を備忘録として下記に示す。
-----------------------------------------------------------------------
1.元画像、切り抜き用画像の用意
-----------------------------------------------------------------------
Bitmap original = BitmapFactory.decodeFile(元画像ファイルPATH);
Bitmap mask1 = BitmapFactory.decodeFile(切り抜き画像ファイルPATH);
切り抜き画像を元画像のサイズにリサイズする。
Bitmap mask2 = Bitmap.createScaledBitmap(mask1, original.getWidth(), original.getHeight(), false);
-----------------------------------------------------------------------
2.切り抜いた画像の器を作成
-----------------------------------------------------------------------
Bitmap bitmap = Bitmap.createBitmap(original.getWidth(), original.getHeight(), Bitmap.Config.ARGB_8888);
これで元画像と同じサイズの単なる器ができた。
-----------------------------------------------------------------------
3.元画像から切り抜き開始
-----------------------------------------------------------------------
1.と2.の処理で画像の用意と切り抜いた後の画像を設定する器ができたので最後に切り抜きを行なう。
Canvas tempCanvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
tempCanvas.drawBitmap(original, 0, 0, null);
tempCanvas.drawBitmap(mask2, 0, 0, paint);
paint.setXfermode(null);
以上でbitmapに切り抜かれた画像情報が設定されたので後は表示させたいImageViewなどに設定するばいい。
2016-01-25 15:57
nice!(0)
コメント(0)
トラックバック(0)
コメント 0