summaryrefslogtreecommitdiffstats
path: root/tdeprint/filters/imagetops
diff options
context:
space:
mode:
Diffstat (limited to 'tdeprint/filters/imagetops')
-rwxr-xr-xtdeprint/filters/imagetops69
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