Quitter le forum et retourner au site

Ras le bol des photos ENOOOOORMMMEEEES ?

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 717
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Ras le bol des photos ENOOOOORMMMEEEES ?

Message par le Manchot Masqué »

Le paquet imagemagick contient de très nombreux utilitaires en ligne de commande pour traiter les photos en lots.
Le script suivant est très simple : il cherche toutes les photos JPEG dans l'arborescence actuelle et les retaille en 1920x1200 (format 16x10) si le fichier dépasse la taille.
A noter que la commande convert recèle de nombreuses autres options (quality notamment).

A sauvegarder sous convert.1920x1200.sh:

Code : Tout sélectionner

#!/bin/bash

OLDIFS=$IFS;
IFS=$'\n';

for i in $(find ./ -type f -name "*.jpg" -o -name "*.jpeg" -o -name "*.JPG" -o -name "*.JPEG"); do
        identify "$i";
        w=$(identify -format "%w" "$i")
        h=$(identify -format "%h" "$i")
        if [ "$w" -gt 1920 -o "$h" -gt 1200 ]; then
                convert -resize '1920x1200>' "$i" "$i";
        fi
done

IFS=$OLDIFS
Bien entendu, ce simple script de base pourrait être amélioré en demandant à l'utilisateur les tailles les plus courantes, comme celles que l'on retrouve sur les blogs ou les réseaux sociaux, par exemple...
On pourrait également le lier directement dans Caja, le navigateur de fichier de Mate...
Avatar de l’utilisateur
juliux
Messages : 10
Inscription : lun. 06 févr. 2017, 17:28
Distribution : Debian, LinuxMint, Arch
Niveau : ~Confirmé

Re: Ras le bol des photos ENOOOOORMMMEEEES ?

Message par juliux »

Cool le script, si seulement j'arriverais à en faire autant.....
Avatar de l’utilisateur
juice
Messages : 247
Inscription : dim. 29 juin 2008, 10:06
Distribution : Archlinux
Niveau : Confirmé
Localisation : Oberentzen

Re: Ras le bol des photos ENOOOOORMMMEEEES ?

Message par juice »

Merci Manchot Masqué pour ce petit script.

Personnellement j’aurais utilisé l’option -iname du find histoire de ne pas avoir à gérer la casse
sur les noms de fichiers et raccourcir la première ligne du for. C’est un poil plus court à écrire.

Je ne connaissais pas la commande identify ni le -o pour le OU dans le find. Je me coucherai moins bête…
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 717
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Re: Ras le bol des photos ENOOOOORMMMEEEES ?

Message par le Manchot Masqué »

C'est vrai... Et quitte à améliorer, autant passer une seconde couche ! ;)

Allez : on fait ça en deux scripts :

Code : Tout sélectionner

$ cat /home/toto/scripts/convert.photos.sh
#!/bin/bash

OLDIFS=$IFS;
IFS=$'\n';

convert_jpg_to () { 
	wmax=$1
	hmax=$2
	for i in $(find ./ -type f -iname "*.jpg" -o -iname "*.jpeg"); do
		identify "$i";
		w=$(identify -format "%w" "$i")
		h=$(identify -format "%h" "$i")
		if [ "$w" -gt "$wmax" -o "$h" -gt "$hmax" ]; then
			echo "convert $i ..."
			convert -resize ${wmax}x${hmax}\> "$i" "$i";
		fi
	done
	sleep 2
}

echo "
Dossier actuel : ${PWD}

Convertir les images :
----------------------
1 > 640x480 (4/3)
2 > 800x600 (4/3)
3 > 1024x768 (4/3)
4 > 1920x1080 (16/9ème)
5 > 1920x1200 (16/10ème)
p > Taille perso...
q / Quitter
"

read -r -n1 -p "> Votre choix ? " choice
echo -e "\n"

case $choice in
	1)
		convert_jpg_to 640 480
		;;
	2)
		convert_jpg_to 800 600
		;;
	3)
		convert_jpg_to 1024 768
		;;
	4)
		convert_jpg_to 1920 1080
		;;
	5)
		convert_jpg_to 1920 1200
		;;
	p)
		read -r -p "> Largeur max ? " wmax
		read -r -p "> Hauteur max ? " hmax
		echo "Convertir les images en ${wmax}x${hmax} maxi ? (o/n)"
		read -r -n1 -p "> Votre choix ? " confirm
		if [ "$confirm" = "o" -o "$confirm" = "O" ]; then
			convert_jpg_to $wmax $hmax
		fi
		;;
	*)
		echo -e "
		\"Rien, c'est rien. Mais trois fois rien, c'est déjà quelque chose !\"
							 (Raymond Devos)\n"
		;;
esac

IFS=$OLDIFS
Puis on lit le script à Caja, le navigateur de fichier de MATE :

Code : Tout sélectionner

$ cat /home/toto/.config/caja/scripts/convertir_les_photos_de_ce_dossier.sh 
#!/bin/bash

mate-terminal -e /home/toto/scripts/convert.photos.sh
Et maintenant, on va dans n'importe quel dossier avec Caja : un clic droit de la souris, menu "scripts", et on choisir "convertir_les_photos_de_ce_dossier.sh"

Satisfait ou remboursé ?
Avatar de l’utilisateur
juice
Messages : 247
Inscription : dim. 29 juin 2008, 10:06
Distribution : Archlinux
Niveau : Confirmé
Localisation : Oberentzen

Re: Ras le bol des photos ENOOOOORMMMEEEES ?

Message par juice »

Ouahou ! Ça c’est une sacré seconde couche !
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 717
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

Re: Ras le bol des photos ENOOOOORMMMEEEES ?

Message par le Manchot Masqué »

Dernière amélioration : les deux scripts peuvent être installés en un tour de main via http://lug68.org/scripts/...
Répondre