我想在应用模糊滤镜时删除图像周围的黑色阴影边框。
请查看以下所附的屏幕截图。 B lur函数正常工作,但要删除黑色阴影。我只想模糊图像。我不想应用任何带有模糊的色彩效果。请让我们知道我何时应该错过...
由于低点,我在这里上传了图片:
https://drive.google.com/open?id=1KtVgqRXOmIEQXh9IMyWNAlariL0hcJBN https://drive.google.com/open?id=1l2eLq7VwFPb3-SfIokW0Ijhk2jqUvjlU
这是我对特定图像应用模糊效果的功能:
参数:
doBlurImage-主图像要使其模糊
imageBlurValue-模糊值从0到50浮动
func makeBlurImage(doBlurImage : UIImage, imageBlurValue : CGFloat) -> UIImage {
let beginImage = CIImage(image: doBlurImage)
let currentFilter = CIFilter(name: "CIGaussianBlur")
currentFilter!.setValue(beginImage, forKey: kCIInputImageKey)
currentFilter!.setValue(imageBlurValue, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: beginImage!.extent), forKey: "inputRectangle")
let output = cropFilter!.outputImage
return UIImage(ciImage: output!)
}
答案 0 :(得分:0)
以下是在ios中生成模糊效果的可能选项:
使用GPUImage的模糊效果:
var resultImage = UIImage()
let gaussianBlur = GaussianBlur()
gaussianBlur.blurRadiusInPixels = Float(ImageBlurValue)
let pictureInput = PictureInput(image: YourImage)
let pictureOutput = PictureOutput()
pictureOutput.imageAvailableCallback = {image in
print("Process completed")
resultImage = image
}
pictureInput --> gaussianBlur --> pictureOutput
pictureInput.processImage(synchronously:true)
pictureInput.removeAllTargets()
return resultImage
快乐编码!...:)
答案 1 :(得分:0)
我找到了解决此问题的另一种方法。
苹果说:
在模糊滤镜之前应用钳位效果可通过使原始图像在所有方向上都不透明来避免边缘柔化。
因此,我们应该应用CIAffineClamp
滤镜以避免黑色阴影,clampedToExtent()
函数将返回一个新图像,该图像是通过使沿其边缘的像素颜色在所有方向上无限延伸而创建的,并且该图像已经是{{ 1}}类,这样我们就可以使用它而无需创建任何额外的功能。
所以解决方案的实现将是这样的:
CIImage
注意:创建上下文非常昂贵,然后可以在函数外部创建它。