我使用UIVisualEffectView来模糊我的图像视图。比起我,我使用这段代码将其转换为图像并保存到图像库。
UIGraphicsBeginImageContextWithOptions(imageContainerView.bounds.size, true, 1)
imageContainerView.drawHierarchy(in: imageContainerView.bounds, afterScreenUpdates: true)
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
imageContainerView是一个包含imageview和UIVisualEffectView的视图。
在将imageContainerView转换为图像之前,将其尺寸增大为2000x2000,这样我将获得高质量的图像。如果不这样做,imageContainerView中的所有图像都会变成像素化。
问题在于,将imageContainerView转换为图像后,由于我增加了容器视图的大小,模糊的图像几乎变得不模糊了。
您能建议解决此问题的方法吗? 我只想得到一个模糊的图像,所以,如果您知道其他使用滑块模糊图像的方法(模糊代码应能快速工作,以使UI不会冻结),请告诉我。
答案 0 :(得分:0)
我只想得到模糊的图像
好吧,您可以实现一些模糊滤镜效果,例如这种效果,以及将其滑动到其上。
var context = CIContext(options: nil)
func blur() {
let blurFilter = CIFilter(name: "CIGaussianBlur")
let beginImage = CIImage(image: YOURIMAGE!)
blurFilter!.setValue(beginImage, forKey: kCIInputImageKey)
blurFilter!.setValue(8, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(blurFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: beginImage!.extent), forKey: "inputRectangle")
let output = cropFilter!.outputImage
let cgImg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cg cgImg mg!)
bg.image = processedImage
}
或者在GitHub上有多个这样的库,例如:https://github.com/FlexMonkey/Blurable