Comment trier les images dans des dossiers, en fonction de la résolution?

9

Contexte: J'ai un dossier rempli d'images de bureau enregistrées. Je voudrais les mettre dans des dossiers, en fonction de leur résolution - 1024x768, etc. La création des dossiers à la volée est un bonus. Actuellement, les images sont toutes dans un dossier, mais certaines d'entre elles sont dans des sous-dossiers. Je peux les fusionner à la main, si cela facilite les choses.

Je préfère le terminal, même si je suis toujours un débutant bash. Je ne suis pas vraiment un programmeur, vraiment.

J'utilise Mac OS X, mais je ne suis pas opposé à l'installation d'applications supplémentaires pour accomplir cela (MacPorts?), Ou même à l'aide d'un autre système d'exploitation (j'ai la configuration de Windows XP, Windows Vista et Ubuntu 9 en ce moment dans VMWare ).

Toute aide serait appréciée! Je vous remercie!

inflammable
la source

Réponses:

11

Je sais que c'est un sujet sur un an (désolé), mais je pense que quelqu'un peut avoir besoin du script de travail complet, alors le voici. Prendre les idées ici et les compiler dans un script que nous obtenons.

#!/bin/bash

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

Sérieusement, merci d'avoir répondu, tout le monde! J'y suis revenu, plus expérimenté, et la plupart des commentaires ici ont plus de sens maintenant.

J'ai légèrement modifié le script de @ zatatlan pour tenir compte des espaces dans les noms de fichiers et ajouter plus d'extensions de fichiers.

#!/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
inflammable
la source
3

Il est possible d'utiliser imagemagick pour détecter la résolution d'image . Enveloppez-le dans une boucle bash et c'est parti. Je n'attendrai pas jusqu'à ce que je rentre à la maison pour un shell bash, alors voici quelque chose sur ma tête. La syntaxe est probablement fausse, mais elle pourrait vous donner quelques indices.

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

   mv $image $res
done

Le script crée des répertoires à la volée. Bash et imagemagick sont disponibles pour mac.

user4126
la source
Vous pouvez rendre le script un peu plus court et plus simple en remplaçant le ifbloc par un simple mkdir -p $res.
Ryan C. Thompson
2

Il y a Amok EXIF ​​Sorter

AmoK Exif Sorter peut renommer des images et les déplacer ou les copier dans des dossiers arbitraires.
Les dossiers peuvent être nommés en fonction des données exif.

Offre un aperçu en direct des noms de fichiers, une visionneuse d'images et de données exif intégrée, un glisser-déposer, une vue miniature, une vérification de mise à jour automatique et des profils pour différentes caméras et utilisateurs.

Prend également en charge les fichiers vidéo par date de création, les fichiers au format IPTC.

Écrit en JAVA , fonctionne sur toutes les plateformes supportant JRE5.
Découvrez la liste des fonctionnalités sur le lien.

Ne vous laissez pas décourager par la langue allemande.
Déroulez Spracheet sélectionnez Englisch, redémarrez l'application.

nik
la source
1

La commande ImageMagick identifier peut vous donner la largeur et la hauteur en pixels, par exemple

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

Vous pouvez mettre cela dans un script bash dans le cadre d'une boucle for et, pour des raisons de sécurité, copier les fichiers dans un répertoire qui est nommé de la même manière que la résolution (vérifiez si elle existe et créez sinon).

mas
la source
0

Une méthode de base qui donnera un ordre approximatif de résolution est d'organiser par taille de fichier. C'est quelque chose qui devrait être intégré à n'importe quel système d'exploitation, donc vous n'avez besoin de rien de spécial. Le gros problème avec cela est que le format de vos photos devrait être le même pour que cela fonctionne. Ce n'est pas une solution parfaite, mais cela peut être un arrêt facile jusqu'à ce que vous trouviez quelque chose qui correspond réellement au projet de loi.

DHayes
la source