这种作品。我找到了一个smiley face image——黑底白字——还有一个brick background。
第一项工作是创建该对的CIImage 版本。我将笑脸通过CIMaskToAlpha 过滤器使黑色透明:
let brick = CIImage(image: UIImage(named: "brick.jpg")!)!
let smiley = CIImage(image: UIImage(named: "smiley.jpg")!)!
.imageByApplyingFilter("CIMaskToAlpha", withInputParameters: nil)
然后将这对与CISubtractBlendMode 组合在一起:
let composite = brick
.imageByApplyingFilter("CISubtractBlendMode",
withInputParameters: [kCIInputBackgroundImageKey: smiley])
最后的结果就差不多了:
减法混合仅适用于白色艺术品。
这是另一种方法:使用CISoftLightBlendMode 进行混合,提高伽玛以使效果变亮,然后使用笑脸作为蒙版将其合成到原始砖块上:
let composite = smiley
.imageByApplyingFilter("CISoftLightBlendMode",
withInputParameters: [kCIInputBackgroundImageKey: brick])
.imageByApplyingFilter("CIGammaAdjust",
withInputParameters: ["inputPower": 0.5])
.imageByApplyingFilter("CIBlendWithMask",
withInputParameters: [kCIInputBackgroundImageKey: brick, kCIInputMaskImageKey: smiley])
这给出了:
这种方法很好,因为您可以使用伽马功率控制油漆白度。
西蒙