¿Cómo ordenar las imágenes en carpetas, según la resolución?

9

Antecedentes: tengo una carpeta llena de imágenes de escritorio guardadas. Me gustaría ponerlos en carpetas, en función de su resolución: 1024x768, etc. Crear las carpetas sobre la marcha es una ventaja. Actualmente, las imágenes están todas en una carpeta, pero algunas están en subcarpetas. Puedo fusionarlos a mano, si eso facilita las cosas.

Preferiría la terminal, aunque todavía soy un poco novato. No soy un gran programador, de verdad.

Estoy usando Mac OS X, pero no me opongo a instalar aplicaciones adicionales para lograr esto (¿MacPorts?), O incluso a usar otro SO (tengo la configuración de Windows XP, Windows Vista y Ubuntu 9 ahora mismo dentro de VMWare )

¡Cualquier ayuda sería apreciada! ¡Gracias!

inflamable
fuente

Respuestas:

11

Sé que es un tema de más de un año (perdón por eso) pero creo que alguien puede necesitar el script de trabajo completo, así que aquí está. Tomando las ideas aquí y compilando en un script que obtenemos.

#!/bin/bash

for image in *.jpg;
    do res=$(identify -format %wx%h\\n $image);
    mkdir -p $res;
    mv $image $res;
done
zatatlan
fuente
4

En serio, gracias por responder, ¡todos! He vuelto a esto, con más experiencia, y la mayoría de los comentarios aquí tienen más sentido ahora.

Modifiqué ligeramente el script de @zatatlan para acomodar espacios en los nombres de archivo y agregar más extensiones de archivo.

#!/bin/bash

shopt -s nullglob # The script spits errors if this is not set and there are, say, no *.png files.
for image in *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP *.png *.PNG;
    do res=$(identify -format %wx%h\\n "$image");
    mkdir -p $res;
    mv "$image" $res;
done
inflamable
fuente
3

Es posible usar imagemagick para detectar la resolución de la imagen . Envuélvelo en un bucle bash y ahí lo tienes. No esperaré hasta llegar a casa con un bash shell, así que aquí hay algo fuera de mi cabeza. La sintaxis probablemente sea incorrecta, pero podría darte algunas pistas.

for image in $(`*.jpg`) do
   res=`identify $image | grep -o 'Resolution:'`
   if [ ! -d $res ]; then
     mkdir $res
   fi

   mv $image $res
done

El script crea directorios sobre la marcha. Tanto bash como imagemagick están disponibles para mac.

usuario4126
fuente
Puede hacer que el script sea un poco más corto y simple reemplazando el ifbloque con un simple mkdir -p $res.
Ryan C. Thompson, el
2

Hay Amok EXIF ​​Clasificador

AmoK Exif Sorter puede cambiar el nombre de las imágenes y moverlas o copiarlas a carpetas arbitrarias.
Las carpetas se pueden nombrar de acuerdo con los datos exif.

Ofrece una vista previa en vivo de los nombres de archivo, una imagen integrada y un visor de datos exif, arrastrar y soltar, vista en miniatura, verificación de actualización automática y perfiles para diferentes cámaras y usuarios.

También admite archivos de video por fecha de creación, archivos con formato IPTC.

Escrito en JAVA , funciona en todas las plataformas de soporte JRE5.
Verifique la lista de características en el enlace.

No se desanime por el idioma alemán.
Tire hacia abajo Sprachey seleccione Englisch, reinicie la aplicación.

nik
fuente
1

El comando de identificación de ImageMagick puede proporcionarle el ancho y la altura en píxeles, p. Ej.

~$ identify -format %w_%h\\n *jpg 
2868_3429
1056_960

Puede poner eso en un script bash como parte de un bucle for y, por seguridad, copie los archivos en un directorio que tenga el mismo nombre que la resolución (verifique si existe y cree si no).

mas
fuente
0

Una forma básica que dará un orden aproximado de resolución es organizar por tamaño de archivo. Esto es algo que debe integrarse en cualquier sistema operativo, por lo que no necesita nada especial. El gran problema con esto es que el formato de sus fotos debería ser el mismo para que esto funcione. Esta no es una solución perfecta, pero puede ser una solución fácil hasta que encuentre algo que realmente se ajuste a la factura.

DHayes
fuente