#!/bin/bash # # Makes thumbnails (a jpeg image) from a given set of input files. # Supported input file types are those supported by 'convert', # plus PDF. # Requires convert(1), gs(1) and file(1) # # Usage: make_thumbs [options] [ file1 file2 ... ] # Author: Emiliano Gabrielli # License: GPL # Latest Version at http://SuperAlberT.it/download/command_line_scripts/elog/ # # $Id: make_thumbs,v 1.7 2005/04/14 10:01:37 albert Exp $ function parse_cmdline() { export OPTERR=1 while getopts "s:q:Vh" "option" ; do case "$option" in s) MAXSIZE=$OPTARG ;; q) QUALITY=$OPTARG ;; V) echo "$0 version $VERSION by $AUTHOR" exit 1 ;; h|*) echo -e "\nUsage: make_thumb [options] [ file1 file2 ... ]" echo -e "Options:\n"\ " -s MAXSIZE the size of the thumbnail to be created\n"\ " -q QUALITY the quality of the JPEG image created\n"\ " -V print version and exit\n"\ " -h print this help and exit\n" exit 1 ;; esac done } function make_thumb() { [ ! -z "$1" ] || exit 1 FILE="$1" # Test if file is readable if ! [ -r "$FILE" ] ; then echo "ERROR in $0: $FILE is not readable." exit 1 fi THUMBFILE="$FILE.thumb" EXTENSION="`echo \"$FILE\" | sed 's/.*\.\([^.]*\)$/\1/'`" # we need this extension in order to instruct 'convert' # will be renamed at the end of the job JPEGFILE="$THUMBFILE.jpg" ROTATE="" # PDF needs special handling if [[ `file $FILE | grep "PDF document"` ]] || [[ `file $FILE | grep "PostScript document"` ]] then # look if we should rotate DEG=`head -200 $FILE | strings | grep "/Rotate " | head -1 | sed -e 's#.*/Rotate \([0-9]\+\).*#\1#'` [ ! -z "$DEG" ] && ROTATE="-rotate $DEG" # Extract first page and convert: PDF -> PS -> JPEG (needs 'gs' and 'convert') gs -q -dNOPAUSE -dBATCH -r75 -dLastPage=1 -sDEVICE=jpeg -sOutputFile=\|cat "$FILE" | \ convert - $ROTATE -size ${MAXSIZE}x${MAXSIZE} -resize ${MAXSIZE}x${MAXSIZE} -quality $QUALITY +profile "*" "$JPEGFILE" && mv "$JPEGFILE" "$THUMBFILE" & # Else it must be one of the following: postscript, JPEG, GIF, TIFF, RS elif [[ `file $FILE | grep "\(JPEG\|GIF\|PNG\|TIFF\) image data"` ]] || [[ "$EXTENSION" == "rs" ]] || [[ "$EXTENSION" == "RS" ]] then convert -size ${MAXSIZE}x${MAXSIZE} "$FILE" -resize ${MAXSIZE}x${MAXSIZE} -quality $QUALITY +profile "*" "$JPEGFILE" && mv "$JPEGFILE" "$THUMBFILE" & fi } AUTHOR="Emiliano 'AlberT' Gabrielli" VERSION="0.2.0" MAXSIZE=600 # default value QUALITY=70 # default value parse_cmdline $@ shift `expr $OPTIND - 1` for file in "$@" ; do make_thumb $file done # vim:ai:ts=4:sw=4: