ios - 如何正确添加蒙版图像?
问题描述
为此,我有使用遮罩图像的代码
func maskImage(image:UIImage, mask:(UIImage))->UIImage{
let imageReference = image.cgImage
let maskReference = mask.cgImage
let imageMask = CGImage(maskWidth: maskReference!.width,
height: maskReference!.height,
bitsPerComponent: maskReference!.bitsPerComponent,
bitsPerPixel: maskReference!.bitsPerPixel,
bytesPerRow: maskReference!.bytesPerRow,
provider: maskReference!.dataProvider!, decode: nil, shouldInterpolate: true)
let maskedReference = imageReference!.masking(imageMask!)
let maskedImage = UIImage(cgImage:maskedReference!)
return maskedImage
}
解决方案
我假设您要删除黑色背景并仅显示镜头光晕。为此,您可以使用屏幕混合模式。
func filteredImage(image: UIImage, effect: UIImage) -> UIImage? {
guard let imageReference = CIImage(image: image),
let effectReference = CIImage(image: effect) else {
return nil
}
let filteredCIImage = effectReference.applyingFilter(
"CIScreenBlendMode",
parameters: [kCIInputBackgroundImageKey: imageReference]
)
let filteredImage = UIImage(ciImage: filteredCIImage)
return filteredImage
}
推荐阅读
- angularjs - gulp 更新后可能未处理的拒绝 (4.0.2)
- javascript - 剑道网格验证不出现
- xcode - 在 App Store 之外分发 Mac 应用程序。我应该怎么签?
- angular - @NgModule 使用 SystemJs 在运行时加载动态组件
- bash - awk:特定符号后的替换字符
- ios - iOS 设备和 BLE 堆栈版本 02.12 的问题
- c# - 更改自适应卡片机器人框架的分隔符属性
- c# - 如何在我的(小型)WPF 应用程序中同时使用 MVVM 和 EF Core?
- javascript - 如何更改 Fancybox 3 中的控制栏颜色?
- sql - 在 BigQuery 表中展平多个相同大小的数组列