J'ai utilisé l'effet CIVignette
pour l'application d'édition de photos. Il s'applique en fonction de l'événement Slider's Changing. J'ai utilisé le code suivant et mon problème est chaque fois que j'ai augmenté la valeur du curseur. L'effet Vignette est apparu mais chaque fois que je diminue la valeur du curseur, l'effet Vignette ne diminue pas.
S'il vous plaît, aidez-nous.Impossible de diminuer l'effet CIVignette à l'aide de UISlider
@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
}
Est-ce bien performer? Pourquoi ne pas utiliser un 'GLKView' et un seul' CIContext'? De cette façon, vous utilisez le GPU et vous pouvez prendre le * courant * CIImage rendu dans le GLKView et sortir un 'UIImage' lors du partage/enregistrement. Je suppose que vous verrez une augmentation de performance de 5 à 10 fois. (Bien sûr, dans le simulateur, vous verrez à peu près la même - ou plus - diminuer, mais profitez de ces GPU quand vous le pouvez.) – dfd
Merci pour votre commentaire @dfd. mais, 'SO' a souligné sur l'autre poste connexe son ne pas utiliser' GLKView'. – Joe
Merci. Encore - comment est la performance? J'ai trouvé dynamiquement en utilisant un curseur pour modifier un 'CIFilter' et en créant un 'UIImage' pour être ... très stuttery. Et d'après ce que je vois dans votre exemple de sortie, c'est le cas ici. – dfd