使用iOS混合模式的Android图像和颜色混合
我目前正在将一个应用程序从iOS移植到Android,在图像处理方面遇到了一些困难 我有一个过滤器类,由ImageOverlays和ColorOverlays组成,它们以特定的顺序应用于给定的基本位图。每个ColorOverlays都有一个RGB颜色值、一个BlendModelId和一个alpha值。每个ImageOverlay都有一个图像位图、一个BlendModeId和一个alpha/强度值 我的主要问题是,我需要支持以下来自iOS的混合模式:使用iOS混合模式的Android图像和颜色混合,android,ios,image,image-processing,alphablending,Android,Ios,Image,Image Processing,Alphablending,我目前正在将一个应用程序从iOS移植到Android,在图像处理方面遇到了一些困难 我有一个过滤器类,由ImageOverlays和ColorOverlays组成,它们以特定的顺序应用于给定的基本位图。每个ColorOverlays都有一个RGB颜色值、一个BlendModelId和一个alpha值。每个ImageOverlay都有一个图像位图、一个BlendModeId和一个alpha/强度值 我的主要问题是,我需要支持以下来自iOS的混合模式: CGBlendModeNormal CGBle
CGContextSetBlendMode(...)
CGContextSetFillColorWithColor(...)
CGContextFillRect(...) - This one is easy
CGContextSetAlpha(...)
我已经开始研究支持这些混合模式和alpha操作的小型第三方库。最有希望的是一个港口
虽然lib magick确实提供了大多数所需的混合模式(称为CompositeOperator
),但我找不到设置强度值或使用混合模式进行颜色填充的方法
我肯定有人以前有过这个问题。任何帮助都将不胜感激。顺便说一句,项目规范禁止我使用OpenGLES。事实证明,在jni中实现它并不像之前预期的那么痛苦。下面的链接包含所有详细信息
即使我通过电子邮件帮助了你,我还是想把你的问题发出去,以防有人需要更多的解释:-) 2.2是API级别8,支持中的“libjnigraphics”库 NDK,用于访问位图对象的像素缓冲区。 您可以手动进行这些混合-它们是非常简单的数学运算 可以很快地完成计算 查看Android JNI位图信息 这非常简单,只需创建一个带有任何 需要的参数(颜色值或可能要混合在一起的另一个位图对象),锁定该位图的像素缓冲区,执行以下操作: 需要计算,并解锁位图 但是,需要注意内存中位图的格式, 因为565的换档/计算将不同于8888。如果看起来不完全正确,请记住这一点