He recibido un gran conjunto de imágenes. Algunas en escala de grises, otras en color. Todos están en una combinación de tiff, png, jpeg, etc... Todos están en mi disco local.
Mi objetivo es separar esas imágenes por paleta de colores (solo en escala de grises o completamente coloreadas), por tamaño de imagen (ancho y alto), por tamaño de archivo, etc... en diferentes directorios.
No hay ningún requisito en el orden de procesamiento, ya que lo que necesito filtrar es aplicar and
todas las reglas que quiero. Es decir, sólo imágenes que cumplan todos los criterios.
¿Cómo automatizo esto?
Respuesta1
ExifHerramientadebe cumplir con sus requisitos. Esinmensamentepotente, soporta una gran cantidad detipos de archivoymetaetiquetasy permite expresiones condicionales de Perl complejas y archivos de configuración basados en etiquetas y otros criterios varios. Te aconsejaría leer eldocumentacióncompletamente, especialmente elseccióndedicado a cambiar el nombre de archivos y crear directorios de destino según criterios especificados por el usuario. Finalmente, si alguna vez te confundes o te atascas, publica en elforoseguramente te ayudará ya que el desarrollador y la comunidad son muy útiles.
Como ejemplo pequeño y bastante simple, el siguiente comando moverá todos los archivos de imagen reconocidos que tengancualquieraun ancho de 1024pxoaltura de 480pxy(en ambos casos) un tamaño de archivo de menos de 200 KB en un directorio (que se creará si es necesario) llamado Moved
:
exiftool -if "((($ImageWidth==1024) || ($ImageHeight==480)) && ($FileSize#<204800))" -directory=Moved *.*
Nota: Aquí $ va seguido del nombre de una etiqueta y # se agrega opcionalmente para deshabilitar la conversión de impresión (es decir, para usar el formato numérico para el tamaño del archivo en lugar de un formato legible por humanos como KB, MB, etc.). Nuevamente, todo está explicado en la documentación.