【发布时间】:2021-09-05 09:31:20
【问题描述】:
在我的项目中,我想将两个 CIImage 组合在一起。 为此,我使用“CISourceInCompositing”
if let currentFilter = CIFilter(name: "CISourceInCompositing") {
let bgImage = inputImage
var filterImage = resizeCIImage(image: filterImage, newWSize: bgImage.extent.size)
filterImage = setOpacity(image: filterImage, alpha: opacity)
currentFilter.setValue(filterImage, forKey: kCIInputImageKey)
currentFilter.setValue(bgImage, forKey: kCIInputBackgroundImageKey)
guard let outputImage = currentFilter.outputImage else {
return CIImage()
}
return outputImage
}
但我想改变“kCIInputImageKey”的不透明度 所以我用这个方法:
func setOpacity (image : CIImage, alpha : Double) ->CIImage {
guard let overlayFilter: CIFilter = CIFilter(name: "CIColorMatrix") else { fatalError() }
let overlayRgba: [CGFloat] = [0, 0, 0, alpha]
let alphaVector: CIVector = CIVector(values: overlayRgba, count: 4)
overlayFilter.setValue(image, forKey: kCIInputImageKey)
overlayFilter.setValue(alphaVector, forKey: "inputAVector")
return overlayFilter.outputImage!
}
但我得到的图像与我想要的不同:
你有什么解决办法吗? 谢谢
【问题讨论】:
标签: swift image-processing core-image cifilter ciimage