¿Cómo puedo escalar todas las imágenes de una carpeta al mismo ancho?

97

Quiero escalar todas las imágenes en una carpeta dada al mismo ancho (pero diferentes alturas apropiadamente escaladas). ¿Cómo puedo hacer esto usando una herramienta basada en GUI o de línea de comandos?

Para los puntos de bonificación, ¿es posible restringir qué imágenes se escalan en función de su ancho inicial (es decir, solo escalar imágenes que tienen un ancho> x y / o un ancho <y)?

david.libremone
fuente
avconv puede hacer esto a través de la CLI - Ver: libav.org/avconv.html#scale-1
Elder Geek

Respuestas:

152

Esto es muy fácil de hacer con imagemagick . Debería poder instalarlo en el Centro de software. Lo sugeriría para el procesamiento por lotes de imágenes.

El cambio de tamaño del lote es increíblemente simple (lo probé con Ubuntu 11.10). Use el siguiente comando para cambiar el tamaño de cada archivo .jpg a 200 píxeles de ancho, manteniendo la relación de aspecto:

$ convert '*.jpg[200x]' resized%03d.png

puede mantener el nombre de archivo usando la opción -set. Ex:

convert "images/*.jpg[250x]" -set filename:base "%[base]" "images/new_folder/%[filename:base].jpg"

Si tiene más archivos, debe usar con find

find /folder -iname '*.JPG' -exec convert \{} -verbose -set filename:base "%[base]" -resize 1920x1080\> "/folder/images/%[filename:base].JPG" \;

Esto solo está rascando la superficie del poder de la imagen mágica. El cambio de tamaño se puede ajustar sin fin . Para un cambio de tamaño más avanzado, debe usar la -resizeopción.

Puede limitar el cambio de tamaño a reducir :

$ convert '*.jpg[300x>]' thumb-300-%03d.png

o agrandando :

$ convert '*.jpg[300x<]' thumb-300-%03d.png

Eche un vistazo a la documentación de geometría para ver más opciones.

Bandi
fuente
1
¿Por qué jpg a png?
JohnyTex
3
Las extensiones .jpg y .png son solo un ejemplo para demostrar el uso de diferentes formatos.
bandi
Para obtener más información sobre la opción -set: imagemagick.org/script/command-line-options.php ; básicamente, -set <property-name> <value>establece una propiedad; %<one-character>y %[<one-or-more-characters>]son expandidos por Imagemagick a su valor; Las propiedades que se utilizan para determinar mediante programación el nombre de archivo de salida deben comenzar filename:, por lo que debemos copiar la basepropiedad, que contiene la ruta de la imagen, en una filename:<something>propiedad.
marcotama
1
Gracias por compartir este truco, ¡no lo sabía!
marcotama
2
propiedad de imagen desconocida "% [base]"
Publicación propia
32

Para GUI, Phatch "un clic vale más que mil fotos" es lo mejor para un trabajo tan rápido. Ya está en el repositorio de Ubuntu.

sudo apt-get install phatch
  1. Agregar elemento Escalar y guardar
  2. Establecer opciones de escala / cambio de tamaño
  3. Establecer opciones de guardar / salida
  4. correr
  5. Establecer carpeta de entrada
  6. Haga clic en lote para ejecutar

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

user.dz
fuente
2
Para un voto a favor, un ejemplo de cómo realizar la tarea en la pregunta sería bueno :) Pero gracias por el consejo, ¡buena herramienta!
jaywink
2
Esto no funcionó en mi máquina (Ubuntu Mate 16.04). La aplicación estaba atascada en la pantalla de inicio
Gunith D
1
@GunithDevasurendra, pruébelo desde la línea de comandos para verificar si hay errores. si no pudo resolverlo, escriba otra pregunta e incluya esa salida.
user.dz
1
Gran herramienta, la usé durante años. Lamentablemente no se mantiene y no funciona en las versiones actuales de Ubuntu. Espero que alguien pueda bifurcar el código para arreglarlo.
Diego V
En Fedora no es lo mismo que arriba y no tiene tal funcionalidad
Vlad
29

Prueba esto:

sudo apt-get install gimp-plugin-registry

Luego, abre Gimp y abre el complemento Batch que se encuentra en Filters > Batch > Batch Process.

Seleccione sus imágenes en la Inputpestaña y defina la operación Cambiar tamaño en la Resizepestaña sorprendentemente nombrada .

Más información se puede encontrar aquí .

SirCharlo
fuente
21

Pruebe el mogrifycomando de las herramientas de ImageMagick.

  • dar una ruta para separar la salida de los originales
  • dar el ancho o alto de la miniatura deseada, debajo de un ejemplo de ancho
  • de esta manera mantienes el nombre de archivo original :-)

Ejemplo:

$ mogrify -path small/ -auto-orient -thumbnail 300x *.jpg
miguelfg
fuente
1
¡Esta es la mejor respuesta en mi opinión!
Tom
2
$ mogrify -path small / -resize 300x * .jpg
Iurie Malai
+1 y puede cambiar el tamaño del lado más largo, ya sea para una imagen girada vertical u horizontal: stackoverflow.com/a/5694903/227926
therobyouknow
8

Respondí y acepté (y uso ImageMagick) pero para completar ... Tengo un jefe no técnico que quería un visor simple con algunas herramientas básicas y tenía que ser GUI. Decidí gThumb por él.

En la vista en miniatura, usted ...

  • Seleccione cualquier imagen que desee cambiar de tamaño
  • Inicie la función de cambio de tamaño (haga clic en el icono de llave inglesa> Cambiar tamaño de imágenes ...)
  • Poner en un nuevo tamaño basado en píxeles o porcentaje
  • Seleccione una carpeta de salida y listo.
Dennis
fuente
Para cambiar el tamaño es una alternativa decente a Phatch hasta que se arregle para 16.04.
Hastig Zusammenstellen
3

Para cambiar el tamaño de la imagen por lotes , he mirado muchos paquetes y finalmente encontré uno con una interfaz utilizable: conversar . Una vez que descubra que las configuraciones importantes están algo ocultas en el panel izquierdo desplazable, todo está bien.
No estoy seguro de si esto cumple con todos los casos de uso de OP, pero es posible que no tenga que mirar las UI extravagantes de imagemagick o phatch.
Curiosamente, los paquetes de administración de fotos como digikam, f-spot, fotoxx o shotwell no parecen reconocer la necesidad de copiar / redimensionar lotes de imágenes antes de cargarlos en servicios en línea como photobucket o (gag) flickr. Estos servicios quieren que hagamos las cosas a su manera, así que no confío en ellos para hacer copias de seguridad de los originales.

Miguel
fuente