La création d'un effet de flou en iOS7
J'ai été à la recherche d'une réponse à cette question dans quelques heures maintenant, et je ne peux pas le comprendre. Je veux ajouter un flou gaussien à l'image lorsque j'appuie sur le bouton "Bouton". L'utilisateur est celui qui est l'ajout de l'image.
J'ai créé une action pour le "Bouton" sur la base de sources de SI et d'autres endroits sur le web. Il ne fonctionnera pas. Ce que je fais mal? Le code serait grandement apprécié. Voici mon "Bouton" action:
- (IBAction)test:(id)sender {
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];
[gaussianBlurFilter setValue:imageView.image forKey: @"inputImage"];
[gaussianBlurFilter setValue:[NSNumber numberWithFloat: 10] forKey: @"inputRadius"];
}
Si vous avez besoin d'autre chose que j'ai fait pour répondre à la question, s'il vous plaît laissez-moi savoir 😀
Vous devez vous connecter pour publier un commentaire.
Trois observations:
Vous devez définir la
inputImage
laCIImage
de votreUIImage
:Je ne vois pas de vous emparer de la
outputImage
, par exemple:Et sans doute vous voulez convertir que
CIImage
retour à unUIImage
.Donc, en mettant tout cela ensemble:
Alternativement, si vous allez à la La WWDC 2013 exemple de code (payé développeur abonnement requis) et de télécharger
iOS_UIImageEffects
, vous pouvez alors saisir leUIImage+ImageEffects
catégorie. Qui donne un peu de nouvelles méthodes:Donc, de flou et de l'image et de l'éclair (donner que "verre dépoli" effet), vous pouvez faire:
Fait intéressant, Apple code ne pas employer
CIFilter
, mais appelle plutôtvImageBoxConvolve_ARGB8888
de la vImage de haute performance framework de traitement d'image.Cette technique est illustrée dans la WWDC 2013 vidéo La mise en œuvre de Mobiliser de l'INTERFACE utilisateur sur iOS.
Je sais que la question a été sur iOS 7, mais maintenant dans iOS 8, on peut ajouter un effet de flou à tout
UIView
objet avecUIBlurEffect
:image
. Peut-être mettre à jour leimageView.image = image;
?CGFloat
variable appeléeradius
, alors vous feriez[gaussianBlurFilter setValue:@(radius) forKey:kCIInputRadiusKey];
UIViewContentModeCenter
. J'ai ajouté le code pour modifier laCGRect
obtenus à partir de[outputImage extent]
de sorte qu'il en résulte une image de la même taille.CIFilter
, mais plutôtvImage
cadre.Cela a fonctionné pour moi, mais il est lent. Je vais faire la transformation sur l'app chargement et utilisez le une fois transformé de l'image dans de nombreux endroits.
Cet effet de flou est pour iOS 8.4. Swift langue.
L'entrée d'un
CIFilter
doit être unCIImage
pas unUIImage
.Swift 4
UIImage
extension sans force déballage:Je recommande fortement le flou de l'image sur le thread d'arrière-plan:
Swift 2.0
Faire une extension de UIImageView. (Fichier-Nouveau-File-Vide Swift de Nom de Fichier il des Extensions. )
Utilisation:
L'Aide De La Méthode 1:
L'Aide De La Méthode 2:
Voici une extension pour le flou de l'image sur
Swift 3