Linux ip-172-26-7-228 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64
Your IP : 18.189.143.127
#!/bin/bash
#
# pnmindex - build a visual index of a bunch of anymaps
#
# Copyright (C) 1991 by Jef Poskanzer.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation. This software is provided "as is" without express or
# implied warranty.
size=100 # make the images about this big
across=6 # show this many images per row
colors=256 # quantize results to this many colors
back="-white" # default background color
doquant=true # quantize or not
title="" # default title (none)
usage ()
{
echo "usage: $0 [-size N] [-across N] [-colors N] [-black] pnmfile ..."
exit 1
}
while :; do
case "$1" in
-s*)
if [ $# -lt 2 ]; then usage; fi
size="$2"
shift
shift
;;
-a*)
if [ $# -lt 2 ]; then usage; fi
across="$2"
shift
shift
;;
-t*)
if [ $# -lt 2 ]; then usage; fi
title="$2"
shift
shift
;;
-c*)
if [ $# -lt 2 ]; then usage; fi
colors="$2"
shift
shift
;;
-b*)
back="-black"
shift
;;
-w*)
back="-white"
shift
;;
-noq*)
doquant=false
shift
;;
-q*)
doquant=true
shift
;;
-*)
usage
;;
*)
break
;;
esac
done
if [ $# -eq 0 ]; then
usage
fi
tmpdir=$(mktemp -d -t pi.XXXXXXXX) || exit 1 #219019
tmpfile=$tmpdir/pi.tmp
maxformat=PBM
rowfiles=()
imagefiles=()
row=1
col=1
if [ "$title"x != ""x ] ; then
# rowfile=`tempfile -p pirow -m 600`
rowfile=$tmpdir/pi.${row}
pbmtext "$title" > $rowfile
rowfiles=(${rowfiles[*]} $rowfile )
row=$(($row + 1))
fi
for i in "$@"; do
cp "$i" $tmpfile
description=(`pnmfile $tmpfile`)
format=${description[1]}
width=${description[3]}
height=${description[5]}
if [ $? -ne 0 ]; then
echo pnmfile returned an error
exit $?
fi
if [ $width -gt $size ] || \
[ $height -gt $size ]; then
case $format in
PBM)
pnmscale -quiet -xysize $size $size $i | pgmtopbm > $tmpfile
;;
PGM)
pnmscale -quiet -xysize $size $size $i > $tmpfile
if [ $maxformat = PBM ]; then
maxformat=PGM
fi
;;
*)
if [ "$doquant" = "true" ] ; then
pnmscale -quiet -xysize $size $size $i | \
ppmquant -quiet $colors > $tmpfile
else
pnmscale -quiet -xysize $size $size $i > $tmpfile
fi
maxformat=PPM
;;
esac
fi
imagefile=$tmpdir/pi.${row}.${col}
rm -f $imagefile
if [ "$back" = "-white" ]; then
pbmtext "$i" | pnmcat $back -tb $tmpfile - > $imagefile
else
pbmtext "$i" | pnminvert | pnmcat $back -tb $tmpfile - > $imagefile
fi
rm -f $tmpfile
imagefiles=( ${imagefiles[*]} $imagefile )
if [ $col -ge $across ]; then
rowfile=$tmpdir/pi.${row}
rm -f $rowfile
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
pnmcat $back -lr -jbottom ${imagefiles[*]} > $rowfile
else
pnmcat $back -lr -jbottom ${imagefiles[*]} | \
ppmquant -quiet $colors > $rowfile
fi
rm -f ${imagefiles[*]}
unset imagefiles
imagefiles=()
rowfiles=( ${rowfiles[*]} $rowfile )
col=1
row=$(($row + 1))
else
col=$(($col + 1))
fi
done
# All the full rows have been put in row files.
# Now put the final partial row in its row file.
if [ ${#imagefiles[*]} -gt 0 ]; then
rowfile=$tmpdir/pi.${row}
rm -f $rowfile
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
pnmcat $back -lr -jbottom ${imagefiles[*]} > $rowfile
else
pnmcat $back -lr -jbottom ${imagefiles[*]} | \
ppmquant -quiet $colors > $rowfile
fi
rm -f ${imagefiles[*]}
rowfiles=( ${rowfiles[*]} $rowfile )
fi
if [ ${#rowfiles[*]} -eq 1 ]; then
cat $rowfiles
else
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
pnmcat $back -tb ${rowfiles[*]}
else
pnmcat $back -tb ${rowfiles[*]} | ppmquant -quiet $colors
fi
fi
rm -f ${rowfiles[*]}
if [ -d "$tmpdir" ]; then
rm -rf "$tmpdir";
fi
exit 0
|