diff options
Diffstat (limited to 'tdeprint/filters/imagetops')
-rwxr-xr-x | tdeprint/filters/imagetops | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tdeprint/filters/imagetops b/tdeprint/filters/imagetops new file mode 100755 index 000000000..634a2caf5 --- /dev/null +++ b/tdeprint/filters/imagetops @@ -0,0 +1,69 @@ +#!/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 |