从位图创建遮罩

create a mask from bitmap

我有一张图像作为位图,例如

我想像这样从该位图中以编程方式创建掩码

我在网上搜索过,没有找到任何解决方法。

2003 Java Q and A about Masking Images

本网站提出的问题与您的相似,答案应该对您有所帮助。他们的代码是在 2003 年 Java 中编写的,但我相信您是在询问您计划在 Android Studio 中根据您在 Java 中的标签进行编程的内容。你的问题有点含糊,但也许这个网站会是一个很好的起点。有更长的解决方案,写出了完整的代码,但我将 post 列出其中一个解决方案。

在该论坛上 post 的解决方案之一是:

//get the image pixel

int imgPixel = image.getRGB(x,y);

//get the mask pixel

int maskPixel = mask.getRGB(x,y);

//now, get rid of everything but the blue channel

//and shift the blue channel into the alpha channels sample space.

maskPixel = (maskPixel &0xFF)<<24

//now, merge img and mask pixels and copy them back to the image

image.setRGB(x,y,imgPixel|maskPixel);

我找到了我的问题的解决方案我通过以下方式使用 PorterDuffColorFilter 为我的位图着色解决了我的问题。

    public Bitmap tintBitmap(Bitmap bitmap, int color) {
          Paint paint = new Paint();
          paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
          Bitmap bitmapResult = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
          Canvas canvas = new Canvas(bitmapResult);
          canvas.drawBitmap(bitmap, 0, 0, paint);
          return bitmapResult;
     }