• [^] # Re: Super

    Posté par . En réponse à la dépêche Sortie de PhotoShow 3.0. Évalué à 3.

    Très vite fais, tu as un sous shell avec le pipe et donc les variables que tu modifie dans ce sous shell ne sont pas accessible à ton shell, on pourrait probablement améliorer un peu comme ça :

    #!/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_voulez
    image_dir=`awk -F '[""]' '/photos_dir/{print 2ドル}' ../config.php`
    thumbs_dir=`pwd`/Thumbs/
    compteur=0
    function convert() {
    while IFS= read -rd '' f ; do
     if file "$f" | grep -o -P '^.+: \w+ image' >/dev/null ; then
     if [ ! -f ${thumbs_dir}/"$f" ] ; then
    echo -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./'`" ] ; then
    echo -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
     fi
     fi
    done
    }
    # pre-requis
    for dir in $image_dir $thumbs_dir ; do
     [ ! -d $dir ] && echo "Erreur, le répertoire d'images $dir n'existe pas" && exit 1
    done
    for 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
     fi
    done
    # 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
    nb=$(find . -type f -print0 | convert | grep -c)
    echo "Script terminé, $nb images ont été traitées"

    Par contre ce n'est pas testé.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)