descargar convert shell imagemagick

shell - convert - imagemagick ubuntu



Comando ImageMagick para convertir y guardar con el mismo nombre (4)

Estoy usando el comando de conversión de ImageMagick para hacer miniaturas y guardar las imágenes convertidas en otro directorio, uno por uno, en PHP.

Pero, no puedo averiguar cómo mantener el nombre de la imagen en la imagen convertida.

> convert 1.JPG -resize 120X120 thumb/*.JPG

es necesario mantener los nombres de los archivos de salida igual que la entrada. Por favor ayuda.


De otra manera:

convert *.jpg -resize 80% -set filename:f ''%t'' ../''%[filename:f].jpg''

Colocará los archivos convertidos en la carpeta de arriba.

La opción -set filename:f ''%t'' establece la propiedad filename:f al nombre de archivo actual sin la extensión. Propiedades que comienzan con filename: son un caso especial al que se puede hacer referencia en el nombre de archivo de salida. Aquí lo configuramos como ... / nombre de ../''%[filename:f].jpg de la ../''%[filename:f].jpg : ../''%[filename:f].jpg de ../''%[filename:f].jpg , que termina siendo el nombre de archivo de la imagen con la extensión reemplazada por .jpg en el directorio principal.

Referencias de documentación:


Esto es lo que hago:

Convertir todos los archivos a filename-new.extension

for FILE in *; do convert -resize 320 $FILE $(echo $FILE | sed ''s//./-new./''); done

Mueva todos los filename-new.extension nuevo a filename.extension :

for FILE in *; do mv $FILE $(echo $FILE | sed ''s/-new//''); done


Otra forma fácil que no implica mucha escritura es GNU Parallel :

parallel convert {} -resize 120X120 thumb/{} ::: *.jpg

se llama a convert para cada uno de los archivos que se dan después de ::: , y {} se reemplaza con el nombre del archivo para cada invocación. Esto también procesará los archivos en paralelo, por lo que probablemente sea mucho más rápido que las otras soluciones aquí.

También funciona si desea convertir el tipo de archivo:

parallel convert {} {.}.png ::: *.jpg

{.} se reemplaza con el nombre de archivo sin extensión, lo que le permite cambiarlo fácilmente.


Una solución simple sería copiar, seguido de mogrify, otra herramienta imagemagick, esto mantendrá los mismos nombres, toma todos los mismos argumentos que convertir.

cp *.jpg thumb/ cd thumb mogrify -resize 120X120 *.JPG

Alternativamente, puedes hacer un poco de shell scripting, usando find -exec o xargs

# using -exec find . -iname "*.JPG" -maxdepth 1 -exec convert -resize 120x120 {} thumbs/{} /; # using xargs find . -iname "*.JPG" -maxdepth 1 | xargs -i{} convert -resize 120x120 {} thumbs/{}