android - Android Studio 中的图像混合模式(如 photoshop、paint.net)?
问题描述
我正在尝试以相同的方式混合两个图像Photoshop或paint.net混合它们,具有不同的混合模式,如Difference, Multiply, Additive, Color Burn, Glow, etc.
我发现PorterDuff.Mode
效果很好,但它缺乏混合效果(它只有添加、乘法、屏幕)有没有办法获得更大范围的混合模式?有没有办法编辑 android.graphics.PorterDuff;
库以获得更多混合模式?有任何想法吗?
这是我使用 btw 的 porterduff 代码:
private static Bitmap Result(Bitmap bottomImage, Bitmap topImage){
int sizex = bottomImage.getWidth();
int sizey = bottomImage.getHeight();
Paint paint = new Paint();
Bitmap imageBitmap = Bitmap.createBitmap(sizex, sizey , Bitmap.Config.ARGB_8888);
Canvas comboImage = new Canvas(imageBitmap);
comboImage.drawBitmap(bottomImage, 0f, 0f, paint);;
PorterDuff.Mode mode = PorterDuff.Mode.MULTIPLY;//Porterduff MODE
paint.setXfermode(new PorterDuffXfermode(mode));
Bitmap ScaledtopImage = Bitmap.createScaledBitmap(topImage, sizex, sizey, false);
comboImage.drawBitmap(ScaledtopImage, 0f, 0f, paint);
return imageBitmap;
}
解决方案
我不是图像处理方面的专家,但 PorterDuff 有一些混合模式,即变暗、变亮、正片叠底、加网和叠加。然后,您可以使用 in、atop、xor 等来获得您想要的混合部分的选择。
http://ssp.impulsetrain.com/porterduff.html https://developer.android.com/reference/android/graphics/PorterDuff.Mode
推荐阅读
- html - 阻止调整图像大小
- ruby-on-rails - 方法与?名义上不会在权威政策中引发方法错误
- c++ - 如何找到传递给函数的矩阵的大小?
- javascript - 为字符串添加前缀 +1
- android - 字体样式没有改变android中的数字
- ionic-framework - Ionic 4 页面动画
- android - 找不到 com.wix:detox:+ 的任何匹配项
- reactjs - 使用 Twitter Apollo GraphQL 登录
- sql - 如果添加了 WHERE 子句,LEFT JOIN 不返回任何结果?
- python - django OSError:在 Windows 上找不到名为“cairo”的库