Create albums web site
28/01/2009
Commentaires fermés
#! /bin/sh # Version 1.0 # Nom des fichiers template TEMPLATE_PHOTO="template.photo.xsp"; TEMPLATE_INDEX="template.index.xsp"; TEMPLATE_ALBUMS="template.albums.xsp"; # Taille des images THUMB_MAX=102 IMAGE_MAX=512 # NB_THUMB_PER_LINE=5 # Supression du fichier de log if [ -f warning.log ]; then date=`date '+%T-%r'`; mv warning.log warning.log.$date; fi # Methode de recuperation des informations de l'image # @param $1 Nom de l'image getImageHeight() { identify $1 | awk '{ print $3 }' | awk -F"+" '{ print $1 }' | awk -F"x" '{ print $2 }'; } # Methode de recuperation des informations de l'image # @param $1 Nom de l'image getImageWidth() { identify $1 | awk '{ print $3 }' | awk -F"x" '{ print $1 }'; } # Methode de calcul du pourcentage de reduction ? appliquer pour obtenir une image ? la taille donn??e # @param $1 Nom de l'image # @param $2 Taille ? atteindre getPourcentage() { if [ "$1" != "" ] && [ "$2" != "" ]; then # Recup??ration de la taille de l'image WIDTH=`getImageWidth $1`; HEIGHT=`getImageHeight $1`; # Recup??ration du cote le plus grand if [ `expr $WIDTH \> $HEIGHT` = 1 ]; then SIZE="$WIDTH"; else SIZE=$HEIGHT; fi # Calcul du pourcentage POUR=`expr $2 \* 100`; POUR=`expr $POUR / $SIZE`; # Recuperation de ce qu'il y a apres la virgule POUR1=`expr $2 \* 10000`; POUR1=`expr $POUR1 / $SIZE`; POUR2=`expr $2 \* 100`; POUR2=`expr $POUR2 / $SIZE`; POUR2=`expr $POUR2 \* 100`; DIFF=`expr $POUR1 - $POUR2`; # Si le reste est superieur ? 50 on arondie ? la dixaine superieure if [ `expr $DIFF \> 50` = 1 ]; then POUR=`expr $POUR + 1`; fi # Affichage du resultat echo $POUR; fi } # Methode de retouche des images # @param $1 Nom du template ? utiliser # @param $2 Nombre d'image ? traiter # @param $3 Nom du repertoire contenant les images (JPEG) addImagesAlbum() { # Get user parameters FOLDER=$1; ALBUM=$2; OFFSET=$3; # Initialize variables c=1; # Verify parameters if [ "$1" != "" ] && [ "$2" != "" ]; then if [ -d $FOLDER ]; then if [ ! -d $ALBUM ]; then # Create Album folder mkdir $ALBUM; mkdir $ALBUM/photos; mkdir $ALBUM/thumb; # Get offset (if set) if [ "$3" != "" ]; then c=$OFFSET; fi # Manage all JPEG images for i in `find $FOLDER -iname "*.jpg"`; do if [ -f $i ]; then # Format image number if [ `expr $c \< 10` = 1 ]; then c="0$c"; fi printf "\r Photo n??°${c}"; # Retouche de l'image pour obtenir la taille souhait??e #getPourcentage $i $IMAGE_MAX #echo "Press ENTER to continue" #read toto; POUR=`getPourcentage $i $IMAGE_MAX`; convert -sample `echo ${POUR}%x${POUR}%` "$i" "$ALBUM/photos/${c}.jpg"; # Making Thumbnail POUR=`getPourcentage "$ALBUM/photos/${c}.jpg" $THUMB_MAX`; convert -sample `echo ${POUR}%x${POUR}%` "$ALBUM/photos/${c}.jpg" "$ALBUM/thumb/${c}.jpg"; # Count image number c=`expr $c + 1`; else WARNING=true; printf "\r WARNING: File $i does not exist !"; echo "WARNING: File $i does not exist !" >> warning.log fi done # Saving information about album NB_IMG=`expr $c - 1` echo "ALBUM=$ALBUM" > $ALBUM/$ALBUM.info echo "NB_IMG=$NB_IMG" >> $ALBUM/$ALBUM.info printf ".\n"; else echo "Folder '$ALBUM' already exist !!"; exit; fi else echo "Image folder '$FOLDER' does not exist !!"; exit; fi else echo "Usage: $0 [Image Folder] [Album Name] [Offset]" exit; fi } # Methode de cr??ation des pages pour visualiser chaques images # @param $1 Nom du template ? utiliser # @param $2 Nombre d'image ? traiter # @param $3 Nom du repertoire contenant les images (JPEG) makePages() { # Verify parameters if [ -f $1 ] && [ "$2" != "" ] && [ -d $3 ]; then TEMPLATE=$1 NB_IMG=$2 ALBUM=$3 NUM_IMG=1 if [ -f $TEMPLATE ]; then while [ `expr $NUM_IMG \<= $NB_IMG` = 1 ]; do PREV=`expr $NUM_IMG - 1`; if [ `expr $NUM_IMG \<= 1` = 1 ]; then PREV=$NB_IMG; fi; NEXT=`expr $NUM_IMG + 1`; if [ `expr $NUM_IMG \>= $NB_IMG` = 1 ]; then NEXT=1; fi; if [ `expr $NEXT \< 10` = 1 ]; then NEXT="0$NEXT"; fi if [ `expr $PREV \< 10` = 1 ]; then PREV="0$PREV"; fi if [ `expr $NUM_IMG \< 10` = 1 ]; then NUM_IMG="0$NUM_IMG"; fi printf "\r Page n??°${NUM_IMG}/${NB_IMG}" #printf " (prev=$PREV, next=$NEXT)" cat $TEMPLATE | \ sed "s#ALBUM#<a href='index.html'>$ALBUM</a>#" | \ sed "s#CLASSEMENT#${NUM_IMG}/${NB_IMG}#" | \ sed "s#PREVIMAGE#photo-${PREV}.html#g" | \ sed "s#NEXTIMAGE#photo-${NEXT}.html#g" | \ sed "s#IMAGE#photos/${NUM_IMG}.jpg#g" > $ALBUM/photo-${NUM_IMG}.xsp; NUM_IMG=`expr $NUM_IMG + 1`; done printf ".\n"; else printf "Template page '$TEMPLATE' dos not exist !!\n"; fi else echo "Usage: $0 [Template] [nb images] [Album]" fi } # Methode de cr??ation de l'index avec toutes les images en miniatures # @param $1 Nom du template ? utiliser # @param $2 Nombre d'image ? traiter # @param $3 Nom du repertoire contenant les images (JPEG) makeImagesIndex() { # Template pour les miniatures IMAGE="<td><div width='"`expr $THUMB_MAX + 5`"' height='"`expr $THUMB_MAX + 5`"'><a href='photo-NUM_IMG.html'><img src='thumb/NUM_IMG.jpg' border='0' class='chloe'/></a></div></td>"; NUM_IMG=1; NUM_COL_IN_LINE=1; # Verify parameters if [ -f $1 ] && [ "$2" != "" ] && [ -d $3 ]; then TEMPLATE=$1; NB_IMG=$2; ALBUM=$3; IMAGES="<table border='0'>"; #echo "$TEMPLATE $NB_IMG $ALBUM"; if [ -f $TEMPLATE ]; then while [ `expr $NUM_IMG \<= $NB_IMG` = 1 ]; do if [ "$NUM_COL_IN_LINE" == "1" ]; then IMAGES="$IMAGES <tr>"; fi if [ `expr $NUM_IMG \< 10` = 1 ]; then NUM_IMG="0$NUM_IMG"; fi IMAGES=`echo $IMAGES; echo $IMAGE | sed "s/NUM_IMG/$NUM_IMG/g"`; #CONTENT=`echo $CONTENT | sed "s/\(^.*LINE_CONTENT.*$\)/$IMAGE\n\1\n/g"`; printf "\r Add image n??°${NUM_IMG}/${NB_IMG}" # Increment counters NUM_IMG=`expr $NUM_IMG + 1`; NUM_COL_IN_LINE=`expr $NUM_COL_IN_LINE + 1`; # Close line if needed if [ "$NUM_COL_IN_LINE" == "$NB_THUMB_PER_LINE" ]; then NUM_COL_IN_LINE=1; IMAGES="$IMAGES </tr>"; fi done # Close line if not already done if [ "$NUM_COL_IN_LINE" != "$NB_THUMB_PER_LINE" ]; then IMAGES="$IMAGES </tr>"; fi # Close table IMAGES="$IMAGES </table>"; # Make index cat $TEMPLATE | sed "s#ALBUM_NAME#$ALBUM#g" | sed "s#\(^.*LINE_CONTENT.*$\)#`echo $IMAGES`#g" > $ALBUM/index.xsp printf ".\n"; else printf "Template page '$TEMPLATE' dos not exist !!\n"; fi else echo "Usage: $0 [Template] [nb images] [Album]" fi } # Methode de cr??ation de l'index de tous les albums # @param $1 Nom du template ? utiliser # @param $2 Nombre d'image ? traiter # @param $3 Nom du repertoire contenant les images (JPEG) makeAlbumsIndex() { # Verify parameters if [ -f $1 ] && [ "$2" != "" ] && [ -d $3 ]; then TEMPLATE=$1; NB_IMG=$2; ALBUM=$3; #echo "$TEMPLATE $NB_IMG $ALBUM"; if [ -f index.xsp ]; then cat index.xsp | sed "s#ALBUM_NAME#Liste des Albums#g" | sed "s#\(^.*LINE_CONTENT.*$\)#<li><a href='$ALBUM/index.html'>$ALBUM</a><br/></li>\n\1\n#g" > index.new mv index.new index.xsp; if [ "$WARNING" != "true" ]; then printf "Album '$ALBUM' succesfully added.\n"; else printf "Album '$ALBUM' added with warnings.\nSee warnings.log for more details.\n"; fi elif [ -f $TEMPLATE ]; then cat $TEMPLATE | sed "s#ALBUM_NAME#Liste des Albums#g" | sed "s#\(^.*LINE_CONTENT.*$\)#<h1>Liste des albums :</h1>\n<br/>\n<ul>\n<li><a href='$ALBUM/index.html'>$ALBUM</a><br/></li>\n\1\n</ul>#g" > index.xsp if [ "$WARNING" != "true" ]; then printf "Album '$ALBUM' succesfully added.\n"; else printf "Album '$ALBUM' added with warnings.\nSee warnings.log for more details.\n"; fi else printf "Template page '$TEMPLATE' dos not exist !!\n"; fi else echo "Usage: $0 [Template] [nb images] [Album]" fi } # Lancement de toutes le methode dans le bon ordre ... addImagesAlbum $1 $2 $3; makePages $TEMPLATE_PHOTO $NB_IMG $ALBUM; makeImagesIndex $TEMPLATE_INDEX $NB_IMG $ALBUM; makeAlbumsIndex $TEMPLATE_ALBUMS $NB_IMG $ALBUM;