#!/bin/sh # extract file name and arguments from command line. File name # is supposed to be the last one, if it doesn't exist, then it # is assumed to be another argument. FILE= ARGS= GRAYSCALE= for arg in "$@"; do if [ "$arg" = "-gray" ]; then GRAYSCALE=1 else ARGS="$ARGS $FILE" FILE=$arg; fi done # we're reading from STDIN, store it into a temporary file temp=0 if test -z "$FILE" -o ! -f "$FILE" ; then ARGS="$ARGS $FILE" FILE=`mktemp /tmp/imagetops.XXXXXX` || exit 1 cat > "$FILE" temp=1 fi # check the file mime type, and set the command correspondingly cmd= magic=`file -bi "$FILE"` magicbase=`echo $magic | cut -f 1 -d "/"` magictype=`echo $magic | cut -f 2- -d "/"` if test "$magicbase" != "image" ; then echo "Not an image" exit 1; fi case $magictype in jpeg) cmd="jpegtopnm" ;; png|x-png) cmd="pngtopnm" ;; bmp|x-bmp) cmd="bmptoppm" ;; gif) cmd="giftopnm" ;; tiff) cmd="tifftopnm" ;; *) echo "Unsupported image type: $magic" exit 1 ;; esac # executing command if [ "$GRAYSCALE" = "1" ]; then exec $cmd "$FILE" | ppmtopgm | pnmtops $ARGS else exec $cmd "$FILE" | pnmtops $ARGS fi # removing temporary file if test "$temp" = "1"; then rm -f "$FILE" fi