首页 > 解决方案 > 应用具有 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%?

我试图找到一种方法来设置 alphagrainImage以查看其效果。但还想不通。

有任何想法吗?

标签: iosswiftalphacore-imagecifilter

解决方案


这不是很直观,但您可以使用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!

推荐阅读