链接是https://developer.apple.com/videos/play/wwdc2021/10040/,时间是12:20。
我在iOS 13上实现了这一点
func blendImages(
background: CIImage,
mask: CIImage,
isRedMask: Bool = true
) -> CIImage? {
print("blendImages")
print(foreground.extent.size)
print(mask.extent.size)
// scale mask
let maskScaleX = foreground.extent.width / mask.extent.width
let maskScaleY = foreground.extent.height / mask.extent.height
let maskScaled = mask.transformed(by: __CGAffineTransformMake(maskScaleX, 0, 0, maskScaleY, 0, 0))
let blendFilter = isRedMask ? CIFilter.blendWithRedMask() : CIFilter.blendWithMask()
blendFilter.inputImage = foreground
blendFilter.maskImage = maskScaled
return blendFilter.outputImage
}
字符串
前台:
的数据
蒙版(与前景比例相同但大小不同):
的
result(imageView bgcolor为蓝色):
的
如何在iOS 13下实现?
谢谢
1条答案
按热度按时间cwxwcias1#
要支持iOS 12及更早版本,您可以尝试以下操作:
字符串
您可以通过名称示例化Core Image过滤器。您可以查看下面的文档以了解过滤器的概述。
https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html