2010-01-22 11 views
2

Je dois prendre une liste de mots et créer un fichier PNG de chacun, avec un fond transparent. Je voudrais que mon script permette une opacité réglable de l'avant-plan, mais je peux probablement le faire aussi après coup lorsque les images sont importées dans Matlab.Automatiser la conversion de texte au format PNG (ou un autre format de fichier avec transparence)?

J'imagine que c'est faisable avec ImageMagick et l'ai installé sur mon Mac. Si quelqu'un peut me donner une ligne, je devrais transformer un mot en PNG (le mot peut aussi être le nom de fichier) en Perl ou Python, je peux probablement comprendre le reste du script.

Répondre

0

Matplotlib (mieux connu sous le nom de pylab) fonctionnerait très bien pour cela. En supposant que ImageMagick est installé, ce script devrait fonctionner. (Testé sur Ubuntu 9,10)

import pylab as py, os 

W = ['cat','dog','mouse'] 

for word in W: 
    py.clf() 
    ax = py.axes(alpha=1.0) 
    py.text(0,.5,word) 
    py.axis('off') 
    py.savefig("%s.png"%word) 
    os.system('convert -trim %s.png %s.png' % (word,word)) 

Cela crée trois fichiers sur mon système dog.png, cat.png et mouse.png tous recadrée avec un fond transparent.

+0

doux, je vais faire un essai ce week-end! – yonatron

+1

Si cette réponse est ce que vous cherchiez, veuillez l'indiquer ou nous indiquer ce dont vous avez besoin! – Hooked

1

je trouve this pour être applicable à votre question:

convert -size 560x85 xc:transparent -font Palatino-Bold -pointsize 72 -fill black -draw "text 20,55 'Linux and Life'" linuxandlife.png 
  • taille 560x85: la taille (largeur x hauteur) de l'image
  • xc: transparent: xc signifie couleur de la fenêtre de X, l'utilisation "transparent" pour obtenir un fond transparent
  • fond Palatino-Bold: la police du texte (tapez "identifier -list font" dans le terminal pour connaître toutes les polices supportées)
  • point taille 72: la taille du texte
  • noir de remplissage: la couleur du texte (vérifiez ce lien pour connaître les noms des couleurs prises en charge)
  • dessiner "text 20,55 'Linux and Life'": le poste du texte et le texte lui-même
  • linuxandlife.png: l'image de sortie
+0

Merci, j'ai utilisé draw et son texte de sous-option. Cependant, j'ai eu beaucoup de mal à trouver qu'il ne supporte pas directement plusieurs lignes ou caractères \ t \ r \ n. convert jette des erreurs qui ne pointent pas directement vers l'anti-rejet de -r dans la chaîne. A la place, il faut créer plusieurs entrées -draw avec des coordonnées x, y séparées pour créer du texte multi-ligne après avoir supprimé les caractères \ t \ r \ n. Ou utilisez les options -caption ou -annotate au lieu de -draw qui supporte directement les multilignes. – TheHairyOne

Questions connexes