2017-10-10 1 views
1

내 사진 편집 응용 프로그램에 CIVignette 효과를 사용했습니다. Slider 's Changing 이벤트를 기반으로 적용됩니다. 다음 코드를 사용했는데 슬라이더의 값을 늘릴 때마다 문제가 발생합니다. 비 네트 효과가 표시되지만 슬라이더 값을 줄 일 때마다 비 네트 효과가 감소하지 않습니다.
는 제발 도와주세요. 코드 아래UISlider를 사용하여 CIVignette 효과를 줄일 수 없습니다.

@IBAction func slider(_ sender: UISlider) { 

     let startImage = CIImage(image: imgEdited!)! 

     let vignetteFilter = CIFilter(name: "CIVignette")! 

     let radius = 5 

     vignetteFilter.setValue(startImage, forKey:kCIInputImageKey) 
     vignetteFilter.setValue(sender.value, forKey:"inputIntensity") 
     vignetteFilter.setValue(radius, forKey:"inputRadius") 

     let filteredImageData = vignetteFilter.value(forKey: kCIOutputImageKey) as! CIImage 
     let filteredImageRef = self.context.createCGImage(filteredImageData, from: filteredImageData.extent) 

     imgImage.image = UIImage.init(cgImage: filteredImageRef!) 
     self.imgEdited = imgImage.image 
} 

답변

2

은 다른 SO 포스트 Blur effect using slider Is not working properly 내 답변에 따라. 심에서

@IBAction func slider(_ sender: UISlider) { 

    let startImage = CIImage(image: UIImage(named: "Your Image Name")!) // You should initialise your UIImage here not UIImageView 
    let vignetteFilter = CIFilter(name: "CIVignette")! 

    vignetteFilter.setValue(startImage, forKey:kCIInputImageKey) 
    vignetteFilter.setValue(sender.value, forKey:kCIInputIntensityKey) 
    vignetteFilter.setValue(5, forKey:kCIInputRadiusKey) 

    let filteredImageData = vignetteFilter.value(forKey: kCIOutputImageKey) as! CIImage 
    let filteredImageRef = self.context.createCGImage(filteredImageData, from: filteredImageData.extent) 

    self.imgView.image = UIImage.init(cgImage: filteredImageRef!) // Output 

} 

출력 :

enter image description here

+1

이 잘 수행 하는가? 왜'GLKView'와 하나의'CIContext'를 사용하지 않겠습니까? 그런 식으로 GPU를 사용하면 GLKView에서 렌더링되는 * 현재 * CIImage를 가져 와서 공유/저장시'UIImage'를 출력 할 수 있습니다. 5 ~ 10 배의 성능 향상을 기대합니다. (물론, 시뮬레이터에서는 비슷한 정도의 감소를 볼 수 있지만 가능한 한 GPU를 활용하십시오.) – dfd

+0

@dfd에 대한 귀하의 의견을 보내 주셔서 감사합니다. 그러나'SO'는'GLKView'를 사용하지 않는 다른 관련 게시물에 대해 지적했다. – Joe

+0

감사합니다. 그래도 성능은 어떻습니까? 슬라이더를 사용하여 동적으로 'CIFilter'를 변경하고 'UIImage'를 생성하는 것을 발견했습니다 ... 매우 불안정합니다. 그리고 출력 예제에서 보았던 것에서 이것은 여기에 해당됩니다. – dfd

관련 문제