Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2944 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  ImageMagick: convert: couleur de texte = "négatif" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ImageMagick: convert: couleur de texte = "négatif" ?

n°1904652
MisterBark
be aware
Posté le 12-07-2009 à 00:22:42  profilanswer
 

Salut,

 

Je suis en train de coder une plateforme de blogs.
Parmi les fonctions, je veux convertir les images uploadées puis y ajouter l'adresse de chaque blog.

 

Voila comment je compte m'y prendre :

Code :
  1. convert -verbose -alpha deactivate -antialias -filter Lanczos -resize 720x540 -unsharp 0.7x0.7+0.7+0.03 -quality 70 -intent perceptual -gravity SouthEast -font Verdana.ttf -pointsize 10 -fill rgba\(0,0,0,0.42\) -annotate 0x0+4+2 "http://maplateforme.tld/LeBlogDeFoo/" input output.jpg


Cela fonctionne très bien, sauf si la couleur moyenne de l'angle en bas à droite est plutot sombre.
Dans ce cas, le noir de rgba\(0,0,0,0.42\) ne se verra pas.

 

On pourrait alors envisager la solution de découper le carré concerné, flouter à fond et sonder la couleur pour connaître la couleur moyenne de la zone et choisir entre blanc et noir.

 

Mais :
1) cette solution serait un peu lourde
2) après quelque tests sur cas réels je me rends vite compte que ca ne marche pas car il arrive souvent que cette zone soit faite de blancs ET de noirs.

 

NB: j'ai mis une transparence de 0.42 avec une petite police car je tiens vraiment à ce que ce texte reste TRES discret (car possibilité d'imprimer les photos et les recevoir chez soi... ca risquerait d'énerver les gens)

 


on en arrive à ma grande question :

 

Je me suis souvenu qu'il existait une "couleur" dans les icones qui était en réalité l'inverse de ce qu'il y a en dessous, une sorte de transparence inversée ou "couleur négative".
On a tous vu ca dans des pointeurs de souris bien minables...
Lorsqu'on arrive dans une zone noire, le pointeur devient blanc, sur du bleu il devient orange, etc...

 

Cette "couleur" serait vraiment l'idéal dans mon cas et donc je me demande s'il n'y aurait pas un moyen d'intégrer ca dans convert ?
Dans ce cas, la couleur du texte serait variable: constamment l'inverse de la couleur du pixel qu'il y a en dessous.
ATTENTION: je ne parle bien sur pas de variation lors de l'affichage de l'image, mais lors de l'incrustation du texte dans l'image originale.

 

MERCI beaucoup par avance pour vos idées !


Message édité par MisterBark le 12-07-2009 à 00:25:25

---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
mood
Publicité
Posté le 12-07-2009 à 00:22:42  profilanswer
 

n°1904661
MisterBark
be aware
Posté le 12-07-2009 à 08:00:42  profilanswer
 

Bon, j'ai trouvé une méthode mais
1) c'est quand meme super lourd
2) bien que ca marche extremement bien, j'ai oublié une chose: le négatif de gris est gris... donc s'il y a trop de couleurs un peu grises dans la zone de texte, ca ne se verra pas.
 
Voila tout cette méthode :
1) redimensionner l'image originale comme d'habitude, sans rien modifier -> temp1.png
2) creer text.png qui aura le texte en rgba\(0,0,0,0.6\) par exemple, et le fond en transparent, le tout avec des nuances de transparence.
3) c'est la qu'arrive le secret: gràce à -compose Dst_Out, faire un "trou" dans temp1.png à l'aide de text.png -> temp2.png
Ce trou est donc transparent mais avec des nuances de transparence pour le lissage du texte.
4) avec -level 100%,0  faire le négatif dfe temp1.png -> temp3.png
5) mélanger temp2.png et temp3.png grace à -composite et encoder ca en out.jpg.
 
Résultat: on a non seulement une transparence négative parfaitement lissée, mais en plus on peut doser la nuance de transparence avec le 0.6 du rgba
 
MAIS,
 
Cette méthode n'étant pas top lorsque les couleurs se rapprochent du gris, je pense que le mieux est de faire un crop sur la zone qu'on veut utiliser pour le texte, et analyser avec identify puis faire la moyenne des Mean et "Standard deviation" avec de décider si on fait un simple noir ou blanc avec un peu de transparence, ou cette méthode de négatif.
Je vais donc coder ca pour que toutes les valeurs (transparence, et couleurs) s'ajustent automatiquement en fonction des résultats du identify.
 
Voila.
Si quelqu'un a une meilleure idée pour qu'on voit le texte dans tous les cas mais qu'il reste ultra discret...


---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)
n°1904663
Joel F
Real men use unique_ptr
Posté le 12-07-2009 à 09:25:37  profilanswer
 

et faire un XOR de ton texte avec el fond, ca serait pas plus simple ?

n°1904698
MisterBark
be aware
Posté le 12-07-2009 à 19:08:23  profilanswer
 

hum en effet ca enlève 2 étapes !
PS: non, en fait c'est pas xor qu'il faut mais difference ! (voire exclusion)
et dans ce cas, il faut mettre le texte plutot blanc.

 

MERCI ! :D


Message édité par MisterBark le 13-07-2009 à 08:33:28

---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  ImageMagick: convert: couleur de texte = "négatif" ?

 

Sujets relatifs
Afficher texte au survol javascriptrécupérer une ligne de texte pointée dans un fichier txt
[CSS] Positionner texte par rapport element precedentconvertir un fichier texte en fichier XML
Générer du texte dans mon formulaire[imagemagick] problème pour récuperer la valeur d'un pixel
comment faire appraitre texte clair dans google[Resolu] [VBA] Macro Excel - Zone de texte
[VBS] Supprimer des espaces dans un fichier texte[VBS] Récuperer contenu fichier texte dans une variable:
Plus de sujets relatifs à : ImageMagick: convert: couleur de texte = "négatif" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR