summaryrefslogtreecommitdiffstats
path: root/kdeprint/filters/imagetops
blob: 634a2caf53b77739a35758d3cc84a0af5749bb5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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