我正在使用以下函数对带有深度图的图像进行模糊处理,并注意到滤镜在最终结果图像周围创建了一个边框。我不确定我做错了什么造成了这个。
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)
}
最佳答案
我想你可能想说:
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
将设置范围以包括所有采样的像素,其中可能包括您不关心的像素,特别是沿着边缘的像素,其中颜色值与原始图像边界之外的值进行平均。
关于ios - CIMaskedVariableBlur 创建不需要的边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47561980/