我目前正在將應用程序從iOS移植到Android,並且在圖像處理方面遇到了一些困難。使用iOS混合模式的Android圖像和顏色混合
我有一個過濾器類,由ImageOverlays和ColorOverlay組成,它們以特定的順序應用於給定的基本位圖。每個ColorOverlays都有一個RGB顏色值,一個BlendModeId和一個alpha值。每個ImageOverlay都有一個圖像位圖,一個BlendModeId和一個alpha /強度值。
我的主要問題是,我需要支持從iOS版採取以下混合模式:
- CGBlendModeNormal
- CGBlendModeMultiply
- CGBlendModeScreen
- CGBlendModeOverlay
- CGBlendModeDarken
- CGBlendModeLighten
- CGBlendModeColorDodge
其中一些在Android中有相應的PorterDuff.Mode類型,而另一些則沒有。更糟的是,一些確實存在的模式是在最近版本的Android中引入的,我需要在API級別8上運行。
嘗試從頭開始構建模式效率極低。
此外,即使使用API8中存在的模式,我也無法找到混合2個圖像但允許您指定遮罩強度(來自ImageOverlay的Alpha值)的方法。與ColorOverlays類似。
iOS的功能,我想在Android的複製是
CGContextSetBlendMode(...)
CGContextSetFillColorWithColor(...)
CGContextFillRect(...) - This one is easy
CGContextSetAlpha(...)
我已經開始尋找支持這些混合模式和alpha操作小的第三方庫。最有希望的是poelocesar's lib-magick,據推測它是ImageMagick的一個端口。
儘管lib-magick確實提供了大多數所需的混合模式(稱爲CompositeOperator
),但我無法找到設置強度值或使用混合模式進行顏色填充的方法。
我確定有人以前有過這個問題。任何幫助,將不勝感激。順便說一下,項目規範禁止我進入OpenGLES。