如何解决使用 50% alpha 应用 CIHardLightBlendMode
我正在将 CIImage 与有斑点的灰色(类似胶片颗粒)文件混合:
var hardLightBlendFilter = CIFilter(name: "CIHardLightBlendMode")!
var inputImage: CIImage = ...
let grainImage = CIImage(cgImage: (UIImage(named: "Grain")?.cgImage)!)
hardLightBlendFilter.setValue(inputImage,forKey: kCIInputBackgroundImageKey)
hardLightBlendFilter.setValue(grainImage,forKey: kCIInputImageKey)
我如何才能仅应用 50% 的效果?
我试图找到一种方法来设置 grainImage
的 alpha 以查看其效果。但是还没搞清楚。
有什么想法吗?
解决方法
这不是很直观,但您可以使用 CIColorMatrix
过滤器来操作图像的 alpha 值:
let colorMatrixFilter = CIFilter(name: "CIColorMatrix")!
colorMatrixFilter.setValue(grainImage,forKey: kCIInputImageKey)
colorMatrixFilter.setValue(CIVector(x: 0.0,y: 0.0,z: 0.0,w: 0.5),forKey: "inputAVector") // where 0.5 is the factor applied to alpha
let transparentGainImage = colorMatrixFilter.outputImage!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。