应用 CIHardLightBlendMode 和 50% alpha
Apply CIHardLightBlendMode with 50% alpha
我正在将 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!
我正在将 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!