2017-10-10 10 views
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 
} 

答えて

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 

} 

SIMから出力:

enter image description here

+1

これはうまく実行していますか? 'GLKView'と単一の' CIContext'を使わないのはなぜですか?あなたはGPUを使用してGLUViewでレンダリングされている* current * CIImageを取得し、共有/保存時に 'UIImage'を出力することができます。 5〜10倍のパフォーマンス向上が見込まれます。 (もちろん、シミュレータでは、同じかそれ以上の減少しか見えませんが、可能であればそれらのGPUを利用してください) – dfd

+0

コメントありがとう@dfd。しかし、「SO」は、「GLKView」を使用しない他の関連記事を指摘した。 – Joe

+0

ありがとうございます。それでもパフォーマンスはどうですか?私は動的にスライダーを使って 'CIFilter'を変更し、' UIImage'を作成しました。非常に面倒です。あなたの出力例で私が見ていることから、これがここに当てはまります。 – dfd

関連する問題