Первое изображение ниже — это исходное изображение.
Второе изображение — это размытое изображение, реализованное с помощью Core Image API.
Третье изображение — это размытое изображение, реализованное с помощью UIVisualView
.
Очевидно, что Core Image размыл изображение и уменьшил его. Больший радиус привел к более широкой белой рамке.
Вопрос. Как использовать основное изображение для создания визуального эффекта, подобного эффекту UIVisualView
.
По крайней мере, как использовать Core Image для размытия изображения без белой рамки.
func blur(image: UIImage, withRadius radius: Float) -> UIImage {
let context = CIContext(options: nil)
let image = CIImage(image: image)
let filter = CIFilter(name: "CIGaussianBlur")
filter?.setValue(image, forKey: kCIInputImageKey)
filter?.setValue(radius, forKey: "inputRadius")
let result = filter?.outputImage
return UIImage(cgImage: context.createCGImage(result!, from: (result?.extent)!)!)
}
Третье изображение
func addVisualEffectView() {
let effectView = UIVisualEffectView(effect: UIBlurEffect(style:.light))
effectView.frame = originalImageView.bounds // originalImageView is the ImageView represents the original image
originalImageView.addSubview(effectView)
}