Porterduff模式(乘法)



我想对PNG图像使用porterduff乘法模式,但背景变黑了,只有PNG扩展图片中的背景变黑,我该如何解决这个问题?

当我使用我想要的乘法模式时,背景应该是透明的。

这行代码不起作用:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

我自己写的代码如下,但它不起作用,也没有显示任何图片。

private Bitmap MultiplyBitmap(Bitmap bitmapmultiply){
Bitmap bitmap = Bitmap.createBitmap(bitmapmultiply.getWidth(), bitmapmultiply.getHeight(), Bitmap.Config.ARGB_8888);
Canvas cnvs = new Canvas(bitmap);
Paint pnt = new Paint();
pnt.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
cnvs.drawBitmap(bitmapmultiply, 0, 0, pnt);
Bitmap multiplybitmap = Bitmap.createBitmap(bitmapmultiply.getWidth(), bitmapmultiply.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(multiplybitmap);
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmapmultiply,0,0, null);
canvas.drawBitmap(bitmap, 0, 0, paint);
return multiplybitmap;
}

如何使用Java删除黑色背景?感谢

请参阅安卓网站上的PoterDuff.Mode链接,在那里你可以找到很多例子。

你可以尝试这样的东西(只需根据你的需要调整代码(:

Kotlin

val bmpDrawable = bmp.toDrawable(res)
bmpDrawable = DrawableCompat.setTint(bmpDrawable, Color.BLACK)
val tintedBmp = bmpDrawable.bitmap
return jokeDao.insert(entity.toDbJoke())

Java

Drawable bmpDrawable = bmp.toDrawable(res)
DrawableCompat.setTint(bmpDrawable, Color.BLACK)
Bitmap tintedBmp = bmpDrawable.bitmap

最新更新