ios - 应用具有 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
以查看其效果。但还想不通。
有任何想法吗?
解决方案
这不是很直观,但您可以使用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!
推荐阅读
- go - 为什么 atomic.StoreUint32 优先于 sync.Once 中的正常分配?
- corda - 我可以将corda状态的部分字段暴露给同一网络中的另一个cordapp吗?
- excel - 我的循环(for next)有问题,我想不通?
- laravel - 如何从laravel中的关系表中获取特定列?
- python - 使用 pyinstaller 和 googleapiclient 将 py 转换为 exe
- c# - ASP.NET devexpress GridDataTextColumn 导出 excel 空值
- javascript - 我怎样才能找到平均分
- php - 在 Laravel 8 中计算 Job Batch 的执行时间
- android - Android inn 应用程序 BillingFlowParams 构建器失败并出现 java.lang.IllegalArgumentException
- python - 在 DRF api-root 中将 url 的方案从 http 更改为 https