1
私の写真編集アプリケーションにはCIVignette
エフェクトを使用しました。 Sliderの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を使用してGLUViewでレンダリングされている* current * CIImageを取得し、共有/保存時に 'UIImage'を出力することができます。 5〜10倍のパフォーマンス向上が見込まれます。 (もちろん、シミュレータでは、同じかそれ以上の減少しか見えませんが、可能であればそれらのGPUを利用してください) – dfd
コメントありがとう@dfd。しかし、「SO」は、「GLKView」を使用しない他の関連記事を指摘した。 – Joe
ありがとうございます。それでもパフォーマンスはどうですか?私は動的にスライダーを使って 'CIFilter'を変更し、' UIImage'を作成しました。非常に面倒です。あなたの出力例で私が見ていることから、これがここに当てはまります。 – dfd