vez varias tiempo tamaño redimensionar portable por online mismo lotes imagenes fotos flexxi como cambiar image bash imagemagick filesize

varias - redimensionar imagenes por lotes online



Por lotes cambie el tamaño de las imágenes en una nueva carpeta usando ImageMagick (6)

Tengo una carpeta de imágenes de más de 4MB ; llamemos a esta carpeta dsc_big/ . Me gustaría usar convert -define jpeg:extent=2MB para convertirlos a menos de 2MB y copiar dsc_big/* en una carpeta dsc_small/ que ya exista.

Intenté convert dsc_big/* -define jpeg:extent=2MB dsc_small/ pero eso produce imágenes llamadas -0 , -1 , y así sucesivamente.

¿Qué debo hacer?


Aquí hay una solución sin usar para los bucles en la consola

convert *.jpeg -define jpeg:extent=2MB -set filename:f ''../dsc_small/%t_small.%e'' +adjoin ''%[filename:f]''


Aunque esta es una vieja pregunta, pero estoy agregando esta respuesta para el beneficio de cualquier otra persona que tropiece con esto.

Tuve el mismo problema y, desalentándome con el uso de mogrify , escribí una pequeña utilidad basada en Python llamada easymagick para facilitar este proceso mientras usaba el comando convert .

Tenga en cuenta que esto todavía es un trabajo en progreso. Apreciaré cualquier tipo de comentario que pueda obtener.


Encontré ese cd -ing en la carpeta deseada, y luego usando la variable global bash $PWD hice que mi convert no arrojara ningún error. Estoy utilizando la caption: recientemente implementada de ImageMagick caption: http://www.imagemagick.org/Usage/text/#caption para etiquetar mis imágenes con el nombre de archivo base y ubicarlas en otro directorio dentro del primero.

cd ~/person/photos mkdir labeled for f in $PWD/*.JPG; do width=$(identify -format %w $f) filename=$(basename $f .JPG) convert -background ''#0008'' -colorspace transparent -fill white -gravity center -size ${width}x100 caption:"${filename}" ${f} +swap -gravity south -composite "$PWD/labeled/${filename}.jpg"; done


Este fue el comando que me ayudó después de un largo intento. Quería hacer miniaturas del mismo tamaño de una gran lista de imágenes grandes que tienen ancho y alto variables. Fue para crear una página de galería.

convert -define jpeg:size=250x200 *.jpg -thumbnail 250x200^ -gravity center -extent 250x200 crop/thumbnail-%d.jpeg

Obtuve miniaturas re-clasificadas que tienen el mismo ancho y alto. :) gracias a ImageMagick.


Esto funciona para mí

convert -rotate 90 *.png rotate/image.jpg

produce image-0.jpg, image-1.jpg, image-2.jpg ..... en la carpeta ''rotar''. Sin embargo, no conozco una forma de preservar los nombres originales de los archivos.


convert está diseñado para manejar un único archivo de entrada hasta donde yo sé, aunque tengo que admitir que no entiendo el resultado que está obteniendo. mogrify es más adecuado para el procesamiento por lotes en el siguiente estilo:

mogrify -path ../dsc_small -define jpeg:extent=2MB dsc_big/*

Pero, sinceramente, considero que es peligroso para el uso general (sobrescribirá las imágenes originales si se olvida de eso -path ), así que siempre uso convert junto con un bucle for para esto:

for file in dsc_big/*; do convert $file -define jpeg:extent=2MB dsc_small/`basename $file`; done

La llamada de basename no es necesaria si está procesando archivos en el directorio actual.