使用 Swift 中的滑块控制 ciFilter
Control ciFilter using slider in Swift
我正在尝试使用 CIBoxBlur 滤镜在 imageView.I 上实现模糊效果 我正在使用 UISlider 控制模糊 value.Blur 效果在我增加滑块值时有效。我可以清楚地看到应用于 imageView.But 的模糊值,当我
减少滑块值模糊一直应用到我的 imageView.ImageView 更深入不回到 normal.I 知道为什么是 happening.but 我不知道如何解决它。
@IBOutlet weak var blur: UISlider!
@IBAction func blurSlider(_ sender: UISlider) {
let currentValue = Int(sender.value)
blur.maximumValue = 5
blur.minimumValue = 0
let currentFilter = CIFilter(name: "CIBoxBlur")
currentFilter!.setValue(CIImage(image: imageView.image!), forKey: kCIInputImageKey)
currentFilter!.setValue(currentValue, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: (CIImage(image: imageView.image!)?.extent)!), forKey: "inputRectangle")
let output = cropFilter!.outputImage
let cgimg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cgimg!)
imageView.image = processedImage
}
提前致谢。
很简单。您可以在原始图像而不是已经过滤的图像上应用过滤器。此代码会有所帮助。
@IBAction func blurSlider(_ sender: UISlider) {
let originalImage = UIImage(named: "yourimage")// replace yourimage with the name of your image
let currentValue = Int(sender.value)
blur.maximumValue = 5
blur.minimumValue = 0
let currentFilter = CIFilter(name: "CIBoxBlur")
currentFilter!.setValue(CIImage(image: originalImage!), forKey: kCIInputImageKey)
currentFilter!.setValue(currentValue, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: (CIImage(image: originalImage!)?.extent)!), forKey: "inputRectangle")
let output = cropFilter!.outputImage
let cgimg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cgimg!)
imageView.image = processedImage
}
我正在尝试使用 CIBoxBlur 滤镜在 imageView.I 上实现模糊效果 我正在使用 UISlider 控制模糊 value.Blur 效果在我增加滑块值时有效。我可以清楚地看到应用于 imageView.But 的模糊值,当我 减少滑块值模糊一直应用到我的 imageView.ImageView 更深入不回到 normal.I 知道为什么是 happening.but 我不知道如何解决它。
@IBOutlet weak var blur: UISlider!
@IBAction func blurSlider(_ sender: UISlider) {
let currentValue = Int(sender.value)
blur.maximumValue = 5
blur.minimumValue = 0
let currentFilter = CIFilter(name: "CIBoxBlur")
currentFilter!.setValue(CIImage(image: imageView.image!), forKey: kCIInputImageKey)
currentFilter!.setValue(currentValue, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: (CIImage(image: imageView.image!)?.extent)!), forKey: "inputRectangle")
let output = cropFilter!.outputImage
let cgimg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cgimg!)
imageView.image = processedImage
}
提前致谢。
很简单。您可以在原始图像而不是已经过滤的图像上应用过滤器。此代码会有所帮助。
@IBAction func blurSlider(_ sender: UISlider) {
let originalImage = UIImage(named: "yourimage")// replace yourimage with the name of your image
let currentValue = Int(sender.value)
blur.maximumValue = 5
blur.minimumValue = 0
let currentFilter = CIFilter(name: "CIBoxBlur")
currentFilter!.setValue(CIImage(image: originalImage!), forKey: kCIInputImageKey)
currentFilter!.setValue(currentValue, forKey: kCIInputRadiusKey)
let cropFilter = CIFilter(name: "CICrop")
cropFilter!.setValue(currentFilter!.outputImage, forKey: kCIInputImageKey)
cropFilter!.setValue(CIVector(cgRect: (CIImage(image: originalImage!)?.extent)!), forKey: "inputRectangle")
let output = cropFilter!.outputImage
let cgimg = context.createCGImage(output!, from: output!.extent)
let processedImage = UIImage(cgImage: cgimg!)
imageView.image = processedImage
}