1. ホーム
  2. android

[解決済み] フレーム内マスキング(クロップ)

2023-06-19 15:38:11

質問

リッチUIアプリケーションで、以下のような複雑な形状の画像を表示させたい。

さて、マスク画像と同じように画像を切り出したいのですが、実際には 画像はカメラやギャラリー(正方形や長方形の形状)からインポートすることができ、動的に来ています。 そして、私はその画像が上記のように私のレイアウトフレームに収まるようにしたい。

というわけで、どうすればこれを実現できるのか、ちょっと考えてみました。任意のアイデア/ヒントを歓迎します。

背景フレーム



マスク

同じような この

どのように解決するのですか?

マスク画像を変更し、さらに XfermodeBitmap

マスク

 ImageView mImageView= (ImageView)findViewById(R.id.imageview_id);
 Bitmap original = BitmapFactory.decodeResource(getResources(),R.drawable.content_image);
 Bitmap mask = BitmapFactory.decodeResource(getResources(),R.drawable.mask);
 Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888);
 Canvas mCanvas = new Canvas(result);
 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
 mCanvas.drawBitmap(original, 0, 0, null);
 mCanvas.drawBitmap(mask, 0, 0, paint);
 paint.setXfermode(null);
 mImageView.setImageBitmap(result);
 mImageView.setScaleType(ScaleType.CENTER);
 mImageView.setBackgroundResource(R.drawable.background_frame);

出力を見る

ソースはこちら ここで