J'ai fait pour mon besoin un script bash de fainéant, testé cette nuit sur ma ks2g, 4000 photo traitées, soit 8000 convert effectués sur des images jpeg de 6Mo en 4h sur ma pauvre KS2G. Avantage : ça parallélise grâce à convert au contraire de gd/php, et surtout on peut le lancer en nice et ionice pour préserver les ressources pour les autres processes.
Alors le script est perfectible : je n'ai pas trouvé comment gérer le compteur autrement que par fichier, sinon l'incrément des processus child ne remonte pas au principal ; il est probablement un peu crade (coder n'est pas mon métier), mais il fonctionne.
Après le premier essai de cette nuit, j'ai vu des améliorations à effectuer : en cas d'ajout d'un répertoire, et d'une volumétrie importante de photos... ben c'est long, il va tester si les fichiers small et thumbs existent et les créer le cas échéant. Il y a surement une meilleure manière de faire. Il faudrait également laisser la possibilité de passer en paramètre un nom de répertoire. Il y a la conversion des videos en webm via ffmpeg aussi. Et sûrement d'autres choses.
Ah oui, j'ai fait un chmod -R 640 sur le répertoire Thumbs ensuite pour qu'httpd puisse lire les images (dans mon cas le script est lancé par le user avec lequel j'ai installé PhotoShow, ce user fait partie du groupe http)
#!/bin/bash# Ce script effectue les générations de vignettes 200x200 et les images small 1200x1200^ pour PhotoShow# Il doit être copié dans le répertoire que l'on créé à l'installation de PhotoShow (celui qui contient les répertoires Conf et Thumbs)# et exécuté depuis celui-ci## licence : fait_a_la_rache_mais_ca_marche_faites_en_ce_que_vous_voulezimage_dir=`awk -F '[""]''/photos_dir/{print 2ドル}' ../config.php`thumbs_dir=`pwd`/Thumbs/
compteur=0
# pre-requisfor dir in $image_dir$thumbs_dir;do[ ! -d $dir]&&echo"Erreur, le répertoire d'images $dir n'existe pas"&&exit 1
donefor binaire in convert ffmpeg ;do if( ! which $binaire > /dev/null 2>&1 )then echo"Erreur, le binaire $binaire est introuvable dans le \$PATH"&&exit 1
fidone# creation de la structure des répertoires
rsync -r --include '*/' --exclude '*'$image_dir/ $thumbs_dir# pour toutes les images présentes dans ce répertoire, créer une miniature 200x200 et un small cd$image_dir
find . -print0 |while IFS=read -rd '' f ;do if file "$f"| grep -o -P '^.+: \w+ image' >/dev/null ;then if[ ! -f ${thumbs_dir}/"$f"];thenecho -en "$f : \tvignette "if( convert $image_dir/"$f" -thumbnail 200x200^ -gravity center -extent 200x200 -auto-orient -quality 70 ${thumbs_dir}/"$f")then echo -en "OK\t"else echo -en "Erreur !\t"fi fi if[ ! -f "${thumbs_dir}/`echo "$f" | sed 's/\(.*\)\./1円\_small./'`"];thenecho -n "small "if( convert $image_dir/"$f" -thumbnail 1200x1200 -auto-orient -quality 70 "${thumbs_dir}/`echo "$f" | sed 's/\(.*\)\./1円\_small./'`")then echo -en "OK\n"else echo -en "Erreur !\n"fi fiexport compteur=`expr $compteur + 1`fiecho$compteur > /tmp/compteur
doneecho"Script terminé, `cat /tmp/compteur` images ont été traitées"\rm /tmp/compteur
[^] # Re: Super
Posté par ekyo . En réponse à la dépêche Sortie de PhotoShow 3.0. Évalué à 2.
Hello,
J'ai fait pour mon besoin un script bash de fainéant, testé cette nuit sur ma ks2g, 4000 photo traitées, soit 8000 convert effectués sur des images jpeg de 6Mo en 4h sur ma pauvre KS2G. Avantage : ça parallélise grâce à convert au contraire de gd/php, et surtout on peut le lancer en nice et ionice pour préserver les ressources pour les autres processes.
Alors le script est perfectible : je n'ai pas trouvé comment gérer le compteur autrement que par fichier, sinon l'incrément des processus child ne remonte pas au principal ; il est probablement un peu crade (coder n'est pas mon métier), mais il fonctionne.
Après le premier essai de cette nuit, j'ai vu des améliorations à effectuer : en cas d'ajout d'un répertoire, et d'une volumétrie importante de photos... ben c'est long, il va tester si les fichiers small et thumbs existent et les créer le cas échéant. Il y a surement une meilleure manière de faire. Il faudrait également laisser la possibilité de passer en paramètre un nom de répertoire. Il y a la conversion des videos en webm via ffmpeg aussi. Et sûrement d'autres choses.
Ah oui, j'ai fait un chmod -R 640 sur le répertoire Thumbs ensuite pour qu'httpd puisse lire les images (dans mon cas le script est lancé par le user avec lequel j'ai installé PhotoShow, ce user fait partie du groupe http)