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@15: PROGRAM=genwebgallery
meillo@15: VERSION=0.5
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@16: galleryTitle=""
meillo@6: copyright=""
meillo@0:
meillo@6:
meillo@0:
meillo@0:
meillo@14: 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@15: printf "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@14: 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@14: insertFooter() {
meillo@6: echo "
meillo@0:
meillo@0:
meillo@0:
meillo@6: "
meillo@0: }
meillo@0:
meillo@0:
meillo@6:
meillo@14: log() {
meillo@6: if [ $verbose = "yes" ] ; then
meillo@0: echo "$1";
meillo@0: fi
meillo@0: }
meillo@0:
meillo@0:
meillo@6:
meillo@14: checkConvert() {
meillo@0: log "checking convert installation"
meillo@15: if [ ! `command -v convert` ] ; 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@14: usage() {
meillo@16: echo "usage: $PROGRAM [OPTIONS] PICTURES"
meillo@6: exit 1
meillo@6: }
meillo@0:
meillo@0:
meillo@6:
meillo@14: help() {
meillo@15: echo "$PROGRAM
meillo@6:
meillo@6: generates a web gallery consisting of html pages
meillo@6:
meillo@15: usage: $PROGRAM [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@15: -ps PIXELS size of the pictures ($sizePic)
meillo@6: -ts PIXELS size of the thumbnails ($sizeThumb)
meillo@6: --overwrite overwrite output directory ($overwrite)
meillo@6:
meillo@15: for more information see man page: $PROGRAM(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@16: while [ "$#" -ge 1 ] && [ `echo "$1" | awk '{print substr($0,1,1)}'` = '-' ] ; do
meillo@0: case $1 in
meillo@0: '--version')
meillo@15: echo "$PROGRAM 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@15: echo "see: $PROGRAM --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 "
" >> "$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 " " >> "$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"