wesnoth/utils/png_format_check.sh
2018-03-12 03:48:59 +11:00

77 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
#
# Check the format of PNGs
#
# With --verbose switch, it reports every file and its non-RGBA format individually
#
rgb=0
rgba=0
gray=0
graya=0
index=0
indexa=0
other=0
filelist=""
verbose="no"
while [ "${1}" != "" ]; do
if [ "${1}" = "--verbose" ] || [ "${1}" = "-v" ]; then
verbose="yes"
shift
elif [ -d "${1}" ]; then
filelist="${filelist} `find ${1} -iname "*.png"`"
shift
elif [ -f "${1}" ]; then
filelist="${filelist} ${1}"
shift
else
echo "Argument ${1} is not a known switch nor is it a directory or file. Exiting."
exit 1
fi
done
report_file()
{
if [ "$verbose" = "yes" ]; then
echo "File $1 is in format $2"
fi
}
for i in $filelist; do
result=`pngcheck $i`
if [ $? -ne 0 ]; then
echo "Failure executing pngcheck. Exiting."
exit 1
fi
if echo $result|grep 'RGB+alpha'>/dev/null
then
rgba=$(($rgba+1))
elif echo $result|grep 'RGB'>/dev/null
then
rgb=$(($rgb+1))
report_file $i 'RGB'
elif echo $result|grep 'grayscale+alpha'>/dev/null
then
graya=$(($graya+1))
report_file $i 'grayscale+alpha'
elif echo $result|grep 'grayscale'>/dev/null
then
grey=$(($grey+1))
report_file $i 'grayscale'
elif echo $result|grep 'colormap+trns'>/dev/null
then
indexa=$(($indexa+1))
report_file $i 'palette+trns (alpha)'
elif echo $result|grep 'colormap'>/dev/null
then
index=$(($index+1))
report_file $i 'palette'
else
other=$(($other+1))
report_file $i "`echo $result | sed -e 's/^.*(//;s/).*$//;'`"
echo $result
fi
done
echo "RGBA: $rgba RGB: $rgb Gray+A: $graya Gray: $gray Index+A: $indexa Index: $index Other: $other"