ios - CIMaskedVariableBlur 创建不需要的边框

标签 ios ciimage

我正在使用以下函数对带有深度图的图像进行模糊处理,并注意到滤镜在最终结果图像周围创建了一个边框。我不确定我做错了什么造成了这个。

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/

相关文章:

用于白标应用程序的 iOS 静态库代码库

swift - CIImageProcessorKernel 示例代码返回全白结果

ios - 如何从 YUV 转换为 CIImage for iOS

ios - 有什么方法可以在不将 CIImage 转换为 UIImage 或 CGImage 的情况下将 CIImage 转换为 NSData?

ios - 作为开发者,如何为 IOS 应用程序的订单退款?

ios - iPhone,iOS 8 : How to presentViewController smaller than original view controller?

ios - 导航栏中的 UISearchBar

ios - 将 CIImage 实例转换为 CGImage 实例然后再转换为 UIImage 的原因

cocoa - 如何递归使用 CIFilter 的输出作为新输入?

ios - 正在过渡到的 View 的动画元素