使用iOS混合模式的Android图像和颜色混合

使用iOS混合模式的Android图像和颜色混合,第1张

概述我目前正在将应用程序从iOS移植到Android,在图像处理方面遇到了一些困难.我有一个由ImageOverlays和ColorOverlays组成的过滤器类,它们以特定顺序应用于给定的基本Bitmap.每个ColorOverlays都有一个RGB颜色值,一个BlendModeId和一个alpha值.每个ImageOverlay都有一个图像位图,一个

我目前正在将应用程序从iOS移植到Android,在图像处理方面遇到了一些困难.

我有一个由ImageOverlays和colorOverlays组成的过滤器类,它们以特定顺序应用于给定的基本Bitmap.每个colorOverlays都有一个RGB颜色值,一个BlendModeID和一个Alpha值.每个ImageOverlay都有一个图像位图,一个BlendModeID和一个Alpha /强度值.

我的主要问题是,我需要支持以下iOS混合模式:

> CGBlendModenormal
> CGBlendModeMultiply
> CGBlendModeScreen
> CGBlendModeOverlay
> CGBlendModeDarken
> CGBlendModelighten
> CGBlendModecolorDodge

其中一些在AndroID中具有对应的PorterDuff.Mode类型,而其他则没有.更糟糕的是,确实存在的某些模式是在最新版本的AndroID中引入的,我需要在API级别8上运行.

从头开始构建模式效率极低.

此外,即使使用API​​8中存在的模式,我也无法找到混合2张图像但允许您指定遮罩强度(ImageOverlay中的Alpha值)的方法.与colorOverlays类似.

我要在AndroID中复制的iOS功能是

CGContextSetBlendMode(...)CGContextSetFillcolorWithcolor(...)CGContextFillRect(...) - This one is easyCGContextSetAlpha(...)

我已经开始研究支持这些混合模式和Alpha *** 作的小型第三方库.最有前途的是poelocesar’s lib-magick,据说是ImageMagick的港口.

尽管lib-magick确实提供了大多数所需的混合模式(称为CompositeOperator),但我无法找到一种设置强度值或使用混合模式进行颜色填充的方法.

我敢肯定有人曾经有过这个问题.任何帮助,将不胜感激.顺便说一句,项目规范禁止我进入OpenGLES.

解决方法:

即使我通过电子邮件为您提供了帮助,但我还是想把问题也发给您,以防有人想要更多解释:-)

2.2是API级别8,它支持以下语言中的“ libjnigraphics”库:
NDK,可让您访问位图对象的像素缓冲区.
您可以手动进行这些混合-它们是非常简单的数学运算
计算,并且可以很快完成.

请查看this site以获取AndroID JNI位图信息.

这非常简单,只需使用任何一个创建JNI方法blend()
您需要的参数(颜色值或可能与另一个位图对象混合在一起),锁定该位图的像素缓冲区,执行
计算所需,并解锁位图. Link

不过,请注意内存中位图的格式,
因为565的移位/计算将不同于8888.如果看起来不正确,请记住这一点!

总结

以上是内存溢出为你收集整理的使用iOS混合模式的Android图像和颜色混合全部内容,希望文章能够帮你解决使用iOS混合模式的Android图像和颜色混合所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存