我正在使用以下功能来模糊带有深度贴图的图像,并注意到滤镜会在最终结果图像周围创建边框。我不确定我做错了什么创造了这个。
func blur(image:CIImage,mask:CIImage,orientation:UIImageOrientation = .up) - > UIImage的? {
let invertedMask = mask.applyingFilter("CIColorInvert")
let output = image.applyingFilter("CIMaskedVariableBlur", parameters: ["inputMask" : invertedMask,"inputRadius": 15.0])
guard let cgImage = context.createCGImage(output, from: output.extent) else {
return nil
}
return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)
}
答案 0 :(得分:2)
我想你可能想说:
func blur(image: CIImage, mask: CIImage, orientation: UIImageOrientation = .up) -> UIImage? {
let invertedMask = mask.applyingFilter("CIColorInvert")
let output = image.applyingFilter("CIMaskedVariableBlur", parameters: ["inputMask" : invertedMask,"inputRadius": 15.0])
guard let cgImage = context.createCGImage(output, from: image.extent) else {
return nil
}
return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)
}
绘制原始图像范围的位置。 CIMaskedVariableBlur
将设置范围,以包括所有采样的像素,这些像素可能包括您不关心的像素沿着原始图像边界以外的值平均颜色值的边缘。