UIImage et Image negative
bonsoir a tous ,
je me pose une petite question , est il possible d'inversé une image , j'entends inversé par faire comme la fonction Negatif dans photoshop qui donne donc une image negative , j'aimerai beaucoup le faire dans mon projets qui utilise UIImage
Si quelqu'un a la bonté de m'eclairer
merci par avance
Lastiko
je me pose une petite question , est il possible d'inversé une image , j'entends inversé par faire comme la fonction Negatif dans photoshop qui donne donc une image negative , j'aimerai beaucoup le faire dans mon projets qui utilise UIImage
Si quelqu'un a la bonté de m'eclairer
merci par avance
Lastiko
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le plus simple est de dessiner ton image en utilisant le mode "DifferenceBlendMode" ou éventuellement ExclusionBlendMode.
Soit tu dessines ton image avec ce mode de rendu sur un fond blanc dans ta vue (avec la méthode [tt]drawAtPoint:blendMode:alpha:[/tt] de UIImage par exemple), soit tu dessines ton image avec ce mode dans une image intermédiaire toute blanche, pour avoir cette image inversée en mémoire, et tu dessines cette image intermédiaire inversée ensuite.
Merci beaucoup pour ta réponse Aligator
Alors puisque comme tu me le mettais dans ton MP tu veux affecter cette image à une UIImageView avec maview.image = ..., il faut au préalable créer ton image "inversée" (en négatif) dans une UIImage temporaire.
Après, pour les fonctions, c'est indiqué ici dans la doc.
Au feeling (la flemme de lancer Xcode pour checker) ça devrait donc donner un truc du genre : A tester pour vérifier mais tu vois l'idée.
il est vrai que je t'ai fais un MP car je me suis dis que j'allais pas déranger tout le monde avec mon probleme
je test ton code demain , on verra si je patoge moins avec ca , c'est d'ailleur maintenant ce qui manque a ma premiere appli
Merci beaucoup a toi et aux autres d'ailleurs car c'est la mine d'or ici , enfin a mon gout :P
+
J.
j'ai donc créé une autre image pour etre sur et meme resultat , j'ai tester aussi avec le mode Exclusion et ca change rien
grrrrr vilaine image
Du coup quand tu crées le GraphicContext temporaire pour dessiner ton image inversée dedans... ben au moment où elle est créée, elle est toute noire, et pas toute blanche ! (et du coup dessiner avec le mode Difference (ou Exclusion) ne change pas l'image d'origine)
Le plus simple est donc de dessiner un rectangle blanc après la création de ce contexte : donc écrire ces deux lignes après le [tt] UIGraphicsBeginImageContext(...)[tt] : Et après tu dessines comme avant ton image, avec le mode "difference", et ça marche (testé).
PS : Attention je n'ai pas vérifié mais avec cette méthode tu risques de perdre la transparence de ton image (puisqu'on dessine l'image, avec le blendmode "difference", ... sur une image remplie de blanc -- donc opaque --> l'image ainsi créée gardera donc le blanc opaque du fond là où ton image était transparente). Si cela te pose un réel problème, il faudrait alors idéalement réappliquer le masque (canal alpha / transparence) de ton image d'origine sur l'image inversée ainsi créée (j'ai pas encore regardé comment faire pour ça).
ca marche et effectivement ca perd la transparance , mais ca inverse :P
UN GRAND MERCI ALIgator :P
Donc la catégorie de UIImage, pour rajouter la méthode "negative" à la classe UIImage, ça donne ça (à mettre dans un .h séparé... voire dans ton .h principal où tu veux utiliser cette méthode (moins joli mais bon), et tu peux faire un .m aussi pour le @implementation mais moi pour si peu je met tout dans le .h en général ) Et en imaginant qu'on a un UISwitch "invertSwitch" dans notre interface pour choisir si on veut l'image normale ou en "négatif", l'IBAction devient :
un Grand merci et résolu
je sais pas si je suis trés clair la
en faite cette image negative si je veux lui ajouter par exemple ben je vous le donne en mile un bord comme une pellicule par exemple
et que cela me donne une seul image negative avec un aspect de péllicule photo
Merci par avance pour les eventuelles réponses
Lastiko
- [tt]UIGraphicsBeginImageContext(taille)[/tt] pour créer un contexte graphique te permettant de "créer"/composer ton image
- ensuite tu dessines l'image 1 puis l'image 2 puis tout ce que tu veux dessiner sur ton image finale, etc (avec des appels à "drawInRect" de la classe UIImage pour dessiner des images, UIRectFill et UIRectFrame pour dessiner des rectangles pleins ou juste le bord d'un rectangle, etc
- Une fois que tu as terminé tes opérations de dessin (dessiner ton image, puis l'autre, sur ton contexte graphique de composition), tu récupères l'image ainsi produite avec [tt]UIImage* composedImage = UIGraphicsGetImageFromCurrentImageContext();[/tt], puis tu indiques que tu en as fini avec le contexte graphique de composition avec [tt]UIGraphicsEndImageContext()[/tt]
Et voilà , dans composedImage tu as alors une UIImage correspondant à ton image telle que tu l'as composée, donc correspondant à ce que tu as dessiné entre [tt]UIGraphicsBeginImageContext[/tt] et [tt]UIGraphicsEndImageContext[/tt].
comme quoi faut pas chercher compliqué des fois