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
}
이 잘 수행 하는가? 왜'GLKView'와 하나의'CIContext'를 사용하지 않겠습니까? 그런 식으로 GPU를 사용하면 GLKView에서 렌더링되는 * 현재 * CIImage를 가져 와서 공유/저장시'UIImage'를 출력 할 수 있습니다. 5 ~ 10 배의 성능 향상을 기대합니다. (물론, 시뮬레이터에서는 비슷한 정도의 감소를 볼 수 있지만 가능한 한 GPU를 활용하십시오.) – dfd
@dfd에 대한 귀하의 의견을 보내 주셔서 감사합니다. 그러나'SO'는'GLKView'를 사용하지 않는 다른 관련 게시물에 대해 지적했다. – Joe
감사합니다. 그래도 성능은 어떻습니까? 슬라이더를 사용하여 동적으로 'CIFilter'를 변경하고 'UIImage'를 생성하는 것을 발견했습니다 ... 매우 불안정합니다. 그리고 출력 예제에서 보았던 것에서 이것은 여기에 해당됩니다. – dfd