Comment redimensionner par lots de nombreuses photos tout en conservant l’horodatage intact?

2

J'ai des milliers de photos dans de nombreux dossiers. Je veux les redimensionner en lots, par exemple 3000px sur la plus longue dimension et garder l’horodatage intact.

J'ai utilisé l'outil merveilleusement simple Phatch pour redimensionner tous les fichiers, mais les horodatages d'origine des fichiers ont disparu et il n'y a aucun paramètre dans Phatch pour éviter cela. J'ai donc maintenant un dossier principal avec tous les originaux et un autre dossier avec les résultats Phatch - au cas où cela aiderait.

  • Plate-forme: Linux (Ubuntu)
  • Fichiers sources: 2000 fichiers JPG dans plusieurs sous-dossiers
  • Cible: redimensionné à 3000px (sauf si déjà plus petit que ça),
    • soit redimensionner les fichiers en place
    • ou sauvegarder en copie en utilisant la même structure de dossiers
    • garder les noms de fichiers originaux et les horodatages intacts

Je ne suis pas encore assez Linux pour savoir quels outils je pourrais utiliser (imagemagick? Mogrify?) Et comment, mais j'accepterai volontiers des astuces!

Torben Gundtofte-Bruun
la source
touchprend en charge les horodatages. Vous avez toujours les anciens fichiers, vous avez donc l'ancien nom de fichier avec la date correspondante. Il est possible d'écrire un script en utilisant ces informations et de toucher. (Mais ENOTENOUGHCOFFEE donc je ne l’écris pas atm).
Hennes
Hmm, cela ressemble à une soirée de codage à mes mains non qualifiées. Welp, c'est comme ça que j'apprends!
Torben Gundtofte-Bruun

Réponses:

3

Vous pouvez faire quelque chose comme ça, en utilisant convert à partir du paquet imagemagick , en plaçant de nouveaux fichiers dans / tmp / new ou un répertoire similaire:

mkdir /tmp/new
find . -iname '*.jpg' |
while read file
do convert -resize '>3000x>3000' "$file" /tmp/new/"$file"
   touch -r "$file" /tmp/new/"$file"
done

Si vous êtes satisfait du résultat, déplacez-les avec:

rsync -a /tmp/new/ .
rm -fr /tmp/new
meuh
la source
+1 pour le fichier lu pendant .... touchez -r la partie "$ file" / tmp / new / "$ file". Cela devrait fonctionner même avec un autre programme puis convertir. (ou avec des fichiers déjà convertis).
Hennes