Photos récentes


Pages

Liens

Mots-clés

Archives

Ce site…

Retailler des photos

June 7th, 2010 at 9:08 pm by nono

Retailler des photos, c’est facile. Un p’tit coup de convert ou de mogrify et c’est tout bon.

Sauf qu’en vrai, c’est un peu moins évident que ça. Il leur manque une fonctionnalité élémentaire : un critère sur la taille du fichier obtenu (en gros, un mogrify -geometry 800×800 -max-filesize 200K). C’est dommage, j’en aurais bien l’utilité pour publier des photos sur certain site web. Du coup, j’ai bricolé en vitesse un petit bout de fonction zsh pour retailler des photos en 800×800, 200 Ko maximum.

Il y a plein de trucs codés en dur dedans et on sent bien mes restes de programmation de mon enfance, mais ça marche à peu près. 😉

## Retaillage en 800x800, 200 Ko pour PentaxOne
resize4p1 () {
    if [[ $# -ne 1 ]]
    then
	echo "usage: resize4p1 source.jpeg"
	return 1
    fi
    source=$1
    dest=$(basename $source .jpeg).small.jpeg
    if [[ ! -f $source ]]
    then
	echo "E: Source file ${source} does not exist."
	return 1
    fi
    if [[ -f $dest ]]
    then
	echo "E: Destination file ${dest} already exists."
	return 1
    fi

    # Premiere passe en dur, pas beau mais initialise le "until" comme il faut.
    echo -n "Quality 100 ... "
    convert -antialias -geometry 800x800 -quality 100 $source $dest
    filesize=$(du -sk $dest | awk '{ print $1 }')
    echo "done -- file size is $filesize KB."

    q=99
    until [[ $filesize -lt 200 ]]
    do
	echo -n "Quality $q  ... "
	convert -antialias -geometry 800x800 -quality $q $source $dest
	filesize=$(du -sk $dest | awk '{ print $1 }')
	echo "done -- file size is $filesize KB."
	q=$(($q - 1))
	if [[ $q -lt 1 ]]
	then
	    echo "E: Quality 1 is not small enough -- unexpected error."
	    return 1
	fi
    done
}

Tags: ,
Posted in geekeries


 




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>