meillo@0: #!/bin/sh meillo@0: # meillo@6: # generates a web gallery meillo@0: # requires: ImageMagick (convert) meillo@0: # meillo@0: # meillo@marmaro.de meillo@0: # meillo@0: meillo@0: meillo@6: VERSION=0.4 meillo@2: meillo@6: verbose="no" meillo@6: targetDir="webgallery" meillo@6: overwrite="no" meillo@6: index="index.html" meillo@6: sizePic=800 meillo@6: sizeThumb=150 meillo@6: galleryTitle="photo gallery" meillo@6: copyright="" meillo@0: meillo@6: meillo@0: meillo@0: meillo@0: function checkCreateDir() { meillo@6: remove="no" meillo@6: if [ -e "$targetDir" ] ; then meillo@6: if [ "$overwrite" = "no" ] ; then meillo@6: echo "output directory '$targetDir' already exists." meillo@6: echo -n "remove it? [y/n] " meillo@6: read remove meillo@6: fi meillo@0: meillo@6: if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then meillo@6: echo "removing '$targetDir' ..." meillo@0: rm -r "$targetDir" meillo@6: if [ $? -ne 0 ] ; then meillo@6: echo "ABORT" meillo@6: exit 4 meillo@6: fi meillo@0: else meillo@6: echo "keep output directory" meillo@6: echo "ABORT" meillo@6: exit 3 meillo@0: fi meillo@0: fi meillo@6: meillo@0: mkdir -p "$targetDir" meillo@0: } meillo@0: meillo@0: meillo@0: meillo@6: meillo@0: function insertHeader() { meillo@6: echo " meillo@6: meillo@6: meillo@6: meillo@0: meillo@0: $titleName meillo@6: meillo@6: meillo@0: meillo@0: meillo@0: meillo@6: " meillo@0: } meillo@0: meillo@0: meillo@6: meillo@0: function insertFooter() { meillo@6: echo " meillo@0: meillo@0: meillo@0: meillo@6: " meillo@0: } meillo@0: meillo@0: meillo@6: meillo@0: function log() { meillo@6: if [ $verbose = "yes" ] ; then meillo@0: echo "$1"; meillo@0: fi meillo@0: } meillo@0: meillo@0: meillo@6: meillo@0: function checkConvert() { meillo@0: log "checking convert installation" meillo@0: (convert -version) 2> /dev/null > /dev/null meillo@0: if [ $? -ne 0 ] ; then meillo@6: echo "Can not find 'convert' (package imagemagick)" meillo@6: echo "ABORT" meillo@0: exit 2 meillo@0: fi meillo@6: log "convert found:" meillo@0: log "`convert -version`" meillo@0: } meillo@0: meillo@0: meillo@0: meillo@6: function usage() { meillo@6: echo "usage: `basename $0` [OPTIONS] FILES" meillo@6: exit 1 meillo@6: } meillo@0: meillo@0: meillo@6: meillo@6: function help() { meillo@6: echo "`basename $0` meillo@6: meillo@6: generates a web gallery consisting of html pages meillo@6: meillo@6: usage: `basename $0` [OPTIONS] PICTURES meillo@6: meillo@6: options: meillo@6: --version print program version meillo@6: --help display this output meillo@6: -v be verbose ($verbose) meillo@6: -o DIR folder where generated files go to ($targetDir) meillo@6: -i FILE the name of the index file ($index) meillo@6: -t TEXT title of the gallery ($galleryTitle) meillo@6: -c TEXT a copyright notice ($copyright) meillo@6: -ps PIXELS size of the pics ($sizePic) meillo@6: -ts PIXELS size of the thumbnails ($sizeThumb) meillo@6: --overwrite overwrite output directory ($overwrite) meillo@6: meillo@6: for more information see man page: genwebgallery(1) meillo@6: meillo@6: author: meillo@marmaro.de meillo@6: homepage: http://prog.marmaro.de meillo@6: " meillo@0: exit 0 meillo@6: } meillo@0: meillo@0: meillo@6: meillo@6: meillo@6: # option processing meillo@6: meillo@0: while [ "$#" -ge 1 -a "${1:0:1}" = '-' ] ; do meillo@0: case $1 in meillo@0: '--version') meillo@2: echo "genwebgallery version $VERSION" meillo@0: exit 0 meillo@0: ;; meillo@0: '--help') meillo@6: help meillo@0: ;; meillo@0: '-v' | '--verbose') meillo@6: verbose="yes" meillo@0: shift meillo@0: ;; meillo@0: '-o' | '--output') meillo@6: targetDir="$2" meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-i' | '--index') meillo@0: index=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-t' | '--title') meillo@6: galleryTitle="$2" meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-c' | '--copyright') meillo@0: copyright=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-ps' | '--pic-size') meillo@0: sizePic=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@0: '-ts' | '--thumb-size') meillo@0: sizeThumb=$2 meillo@0: shift meillo@0: shift meillo@0: ;; meillo@6: '--overwrite') meillo@6: overwrite="yes" meillo@6: shift meillo@6: ;; meillo@0: *) meillo@0: echo "invalid option: $1" meillo@0: echo "see: `basename $0` --help" meillo@0: exit 1 meillo@0: esac meillo@0: meillo@0: done meillo@0: meillo@0: if [ $# -eq 0 ] ; then meillo@6: usage meillo@0: fi meillo@0: meillo@0: meillo@6: meillo@0: # verbose output meillo@6: log "verbose: $verbose" meillo@6: log meillo@6: log "output dir: $targetDir" meillo@6: log "index file: $index" meillo@6: log "gallery title: $galleryTitle" meillo@6: log "copyright notice: $copyright" meillo@6: log "picture size: ${sizePic}px" meillo@6: log "thumbnail size: ${sizeThumb}px" meillo@6: log "overwrite output dir: $overwrite" meillo@6: log meillo@0: checkConvert meillo@6: log meillo@0: meillo@0: meillo@6: meillo@6: # generate web gallery meillo@6: meillo@0: checkCreateDir meillo@0: meillo@6: echo `insertHeader` > "$targetDir/$index" meillo@6: if [ "$galleryTitle" != "" ] ; then meillo@6: echo "

$galleryTitle

" >> "$targetDir/$index" meillo@6: fi meillo@0: meillo@0: for i in "$@" ; do meillo@6: file="`basename $i`" meillo@0: targetFile="$targetDir/$file.htm" meillo@0: log "processing file: $file" meillo@0: meillo@0: # generate pic page meillo@6: echo `insertHeader` > "$targetFile" meillo@6: if [ "$galleryTitle" != "" ] ; then meillo@6: echo "

$galleryTitle

" >> "$targetFile" meillo@6: fi meillo@6: echo "

\"$file\"

" >> "$targetFile" meillo@6: if [ "$copyright" != "" ] ; then meillo@6: echo "

$copyright

" >> "$targetFile" meillo@6: fi meillo@6: echo `insertFooter` >> "$targetFile" meillo@0: meillo@0: # copy and resize pics meillo@0: convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file" meillo@0: convert "$i" -resize ${sizeThumb}x${sizeThumb} "$targetDir/_$file" meillo@0: meillo@0: # generate content for index file meillo@0: echo " \"$file\"" >> "$targetDir/$index" meillo@0: done meillo@0: meillo@6: if [ "$copyright" != "" ] ; then meillo@6: echo "

$copyright

" >> "$targetDir/$index" meillo@6: fi meillo@6: echo `insertFooter` >> "$targetDir/$index"