#!/bin/bash # $Id: scan2web,v 1.8 2009/06/09 07:18:33 ajr Exp $ # # Generate web-ready files from scanned originals OEXT='web' # name to append to file SIZE=600 # final image size (default) QUALITY=80 # final image JPEG quality GAMMA='1.0' # final image gamma adjustment LEVEL='3%' # levels adjustment MASKOPACITY=30 # opacity of contrast mask MASKBLUR=15 # amount of blur applied to mask FILTER='sinc' # filter type for resize #TONE='brown4' # toning colour TONE='saddlebrown' # toning colour TONEAMOUNT='8%' # toning amount usage() { echo "Usage: ${0##*/} [-c] [-g gamma] [-l level] [-m] [-o ext] [-r size] [file ...]" echo " -c = local contrast enhancement (unsharp mask)" echo " -g = adjust gamma (default: $GAMMA)" echo " -l = auto levels percentage (default: $LEVEL)" echo " -m = apply contrast mask" echo " -o = output file extension/type" echo " -r = output size (longest side)" } while getopts cg:hl:mo:r: a; do case "$a" in c) CLARITY=1 ;; g) GAMMA="${OPTARG}%" ;; h) usage exit 0 ;; l) LEVEL="${OPTARG}%" ;; m) MASK=1 ;; o) OEXT="$OPTARG" ;; r) SIZE=$OPTARG ;; *) usage exit 1 ;; esac done shift $((OPTIND - 1)) if [ $SIZE -le 1500 ]; then TSIZE=$((SIZE * 3)) # work on large image for small target image else TSIZE=$SIZE fi if [ -n "$CLARITY" ]; then CLARITYPARAM="-unsharp 50x7+0.4+0" fi for f in $@; do basename="${f%.*}" file="$f" if [ -n "$MASK" ]; then # create contrast mask convert "$f" -colorspace GRAY -negate -gaussian $MASKBLUR "${basename}-inv.$$.tif" #composite -dissolve $MASKOPACITY -compose overlay \ composite -compose overlay -dissolve $MASKOPACITY \ "${basename}-inv.$$.tif" "$f" "${basename}-mask.$$.tif" if [ -s "${basename}-mask.$$.tif" ]; then file="${basename}-mask.$$.tif" else echo "${0##*/}: masking failed for $f, not done" fi fi convert -size ${TSIZE}x${TSIZE} "$file" \ -normalize -level $LEVEL -gamma $GAMMA $CLARITYPARAM \ -fuzz 5 -trim -unsharp 0x1+1 \ -filter ${FILTER} -resize ${SIZE}x${SIZE}\> \ -unsharp 0x1+0.4+0.01 -quality $QUALITY +profile icm \ -fill ${TONE} -colorize $TONEAMOUNT \ "${basename}-${OEXT}.jpg" # -enhance -despeckle \ if [ -n "$MASK" ]; then rm -f "${basename}-inv.$$.tif" "${basename}-mask.$$.tif" fi done