ios - 使用滑块更改图像的对比度和亮度
问题描述
我正在尝试使用滑块更改图像的对比度和亮度,并且我以编程方式创建了一个滑块。当我尝试通过滑块改变对比度时,出现类似错误
原因:'-[UISlider floatValue]:无法识别的选择器发送到实例 0x103c4ffa0'`func viewforslide(){ view.frame = CGRect.init(x: 10, y:view.frame.size.height - 180, width: self. view.frame.size.width - 20, height: 40) view.backgroundColor = UIColor.lightGray view.layer.cornerRadius = view.frame.size.height/2 view.addSubview(view) createlider() }
func createslider(){
var sliderDemo = UISlider(frame:CGRect(x: 15, y: 5, width: vieew.frame.size.width - 30, height: 30))
sliderDemo.minimumValue = 0.0
sliderDemo.maximumValue = 1000.0
sliderDemo.isContinuous = true
sliderDemo.tintColor = UIColor.black
sliderDemo.value = 500.0
sliderDemo.addTarget(self, action: #selector(_sldComponentChangedValue),for: .valueChanged)
vieew.addSubview(sliderDemo)
}
@IBAction func _sldComponentChangedValue(sender: UISlider) {
// Set value to the nearest int
sender.setValue(Float(roundf(sender.value)), animated: false)
let newvalforslider = sender
print("\(newvalforslider)")
let displayinPercentage: Int = Int((sender.value/200) * 10000)
// contrastValueLabel.text = ("\(displayinPercentage)")
self.imageView.image = results.enhancedImage
let beginImage = CIImage(image: self.imageView.image!)
let filter = CIFilter(name: "CIColorControls")
filter?.setValue(beginImage, forKey: kCIInputImageKey)
filter?.setValue(sender.value, forKey: kCIInputContrastKey)
var filteredImage = filter?.outputImage
var context = CIContext(options: nil)
imageView.image = UIImage(cgImage: context.createCGImage(filteredImage!, from: (filteredImage?.extent)!)!)
var sliderValue = sender.value
}
`
如果有人帮助我做到这一点,那就太好了。提前致谢。
解决方案
@anisha 如果您使以前的 Ans 复杂化。试试这个新代码。
func increaseContrast(_ image: UIImage) -> UIImage {
let inputImage = CIImage(image: image)!
let parameters =
[
"inputContrast": NSNumber(value: 2) // set how many contrast you want
]
let outputImage = inputImage.applyingFilter("CIColorControls",
parameters: parameters)
let context = CIContext(options: nil)
let img = context.createCGImage(outputImage, from: outputImage.extent)!
return UIImage(cgImage: img)
}
推荐阅读
- node.js - Express mongoose Query 无法设置标头
- mysql - 删除级联的替代方案
- mule - 有没有办法使用 Dataweave 2.0.. 将特定输入日期(即(120042))转换为(DD MMM YYYY)?
- braintree - 使用braintree_php 显示用户友好的网关错误?
- sql - DB2 SQL 抑制字符串中的空格
- git - 通过跳过二进制文件(jar)从一台服务器迁移到另一台服务器
- html - 当数据表没有列时,DT::renderDataTable 中的 formatCurrency
- asp.net - 在 ASP.Net Web Api (ApiController) 中禁用每个请求的会话状态
- python-3.x - 按组和该组中的列删除重复项
- python - 使用 Python 读取多个文本文件时删除重复项