изменить контраст и яркость изображения с помощью ползунка - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь изменить контраст и яркость изображения с помощью ползунка, и я создал ползунок программно.Когда я пытаюсь изменить контраст с помощью ползунка, я получаю сообщение об ошибке типа

reason: '- [UISlider floatValue]: нераспознанный селектор, отправленный экземпляру 0x103c4ffa0'`func viewforslide () {vieew.frame = CGRect.init (x: 10, y: view.frame.size.height - 180, ширина: self.view.frame.size.width - 20, высота: 40) vieew.backgroundColor = UIColor.lightGray vieew.layer.cornerRadius = vieew.frame.size.height / 2 view.addSubview (vieew) 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

}

`

Если кто-нибудь поможет мне сделать это, будетбыть великимЗаранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

@ anisha Если вы усложняете предыдущий ответ. попробуйте этот новый код.

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)
}
0 голосов
/ 04 июня 2019

Добавляя целевой метод к sliderDemo, вы указали селектор (_sldComponentChangedValue), что неверно, ваш фактический метод получает аргумент. В этом разница в имени метода, поэтому на слайде вы видите сбой, говоря " нераспознанный селектор, отправленный на экземпляр "

вместо этого сделайте следующее

sliderDemo.addTarget(self, action: #selector(_sldComponentChangedValue(sender:)), for: .valueChanged);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...