4

したがって、マスクとして使用する次の画像があります。

ここに画像の説明を入力

ここで、このマスクを画像に適用して、画像が内側の空白を塗りつぶすが、境界線を塗りつぶさず、そのままにしておくようにします。ただし、以下のコードを使用すると、画像は内側の空白と境界線を取ります。

public static Bitmap applyMask(Bitmap scaledBitmap, Bitmap mask) {
    Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Bitmap.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(scaledBitmap, 0, 0, null);
    mCanvas.drawBitmap(mask, 0, 0, paint);
    paint.setXfermode(null);
    return result;
}

では、画像で空白のみを埋める方法はありますか? マスクの境界線をそのまま維持するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

0

ここにあなたが望むものの例があり、それをあなたのケースに適応させることができます:

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
  Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
      bitmap.getHeight(), Config.ARGB_8888);
  Canvas canvas = new Canvas(output);

  final int color = 0xff424242;
  final Paint paint = new Paint();
  final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
  final RectF rectF = new RectF(rect);
  final float roundPx = 12;

  paint.setAntiAlias(true);
  canvas.drawARGB(0, 0, 0, 0);
  paint.setColor(color);
  canvas.drawRoundRect(rectF, roundPx, roundPx, paint);

  paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  canvas.drawBitmap(bitmap, rect, rect, paint);

  return output;
}

ここで見つけました。それが役に立てば幸い!:)

于 2015-08-19T07:12:28.907 に答える