You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.2 KiB
70 lines
1.2 KiB
#!/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
|