2010-11-05 16 views

Respuesta

11

respuesta de Eric L. es correcta - 1 de mí por ello! - pero -annotate no le da mucho control sobre la apariencia del texto.

Si busca la belleza, busque algo que use -composite. Puede usar un comando IM para construir primero una imagen de superposición (que usa un fondo semitransparente) y luego superponerla sobre la imagen original.

A continuación, se muestra un ejemplo de cómo hacerlo con -composite en lugar de -annotate, utilizando un enfoque basado en secuencias de comandos que procesa cada archivo PNG en el directorio actual. Que éste se adapta incluso de forma automática el tamaño de fuente y encaja en el "ancho * 90%" disponible - es un script Bash (véanse los comentarios de Win equivalente):

for img in *.png; do 

    width=$(identify -format %W ${img}) 
    width=$((${width} * 9/10)) 

    convert     \ 
    -background '#0008' \ 
    -gravity center  \ 
    -fill white   \ 
    -size ${width}x100  \ 
     caption:"${img}"  \ 
     "${img}"    \ 
    +swap     \ 
    -gravity south   \ 
    -composite    \ 
     "with-caption-${img}" 

done 

Una ilustración de un ejemplo original y el la salida respectiva está debajo:

original image   image with caption!

Aquí es un comando que utiliza -annotate, tratando de establecer un par de cosas más allá de los parámetros por defecto:

for img in so#12231624-right.png; do 

    convert     \ 
     "${img}"    \ 
    -fill red    \ 
    -undercolor '#0008'  \ 
    -pointsize 24   \ 
    -gravity south   \ 
    -annotate +0+5 "${img}" \ 
     "with-annotate-${img}" 

done 

original image   resulting image

+0

¿Es eso para la línea de comando bash? – Serguzest

+0

Esto es para Bash, sí. En Windows/DOS, la sintaxis sería algo así como 'para% i in (* .png) do convert .... '. No hay un '* done *' final aquí, ni un punto y coma después de la parte 'for'. –

+0

Gracias, en realidad lo resolví bash commandline que existe en mis ventanas debido a Git. – Serguzest

16

Es una entrada muy antigua, pero la encuentro cada vez que busco este tema, y ​​no funciona (al menos para mí). Aquí algo que funciona para mí:

convert input.jpg -gravity South -annotate 0 '%f' output.jpg 

Espero que esto ayude a alguien ...

+0

Rápido y fácil de entender, pero en muchas imágenes ilegibles. – erik

+0

¿Cómo especificaría los caracteres específicos del nombre de archivo aquí? Digamos que quería agregar los primeros 3 caracteres del nombre de archivo. ¿Cómo podría hacer os '% f' {0: 2}? –

0

También puede utilizar mogrify para añadir texto al montón de imágenes en una vez.

mogrify -gravity South -annotate 0 '%f' -pointsize 24 -fill white *.png 

Esto sobrescribirá las imágenes existentes, así que asegúrese de tener una copia de seguridad antes de ejecutar esto.

Cuestiones relacionadas