#
# solution for resizing jpegs and pngs of arbitrary size down to a 72x72
# square, preserving source ratio, and filling non-square sides with
# transparency
#
# ahead of time, convert a transparent 72x72 png to blank-72.pam and save
# it with your code
#
#	pngtopam -quiet -alphapam < blank-72.png > blank-72.pam
#
# it would be nice to do all of this with just pipes, without the need for
# any temporary files, but whatever
#

when png
	cat png | \
		pngtopam -quiet -alphapam > a.pam

when jpeg
	# hack to add an alpha channel to a jpeg, needed later
	cat jpeg | \
		jpegtopnm -quiet | \
		pnmtopng -quiet | \
		pngtopam -quiet -alphapam > a.pam

# scale down image to max width/height of 72, but might not be square, and
# then overlay it on blank-72.pam
cat a.pam | \
	pamscale -quiet -xyfit 72 72 | \
	pamcomp -quiet -mixtransparency -align=center -valign=middle - blank-72.pam > b.pam

# extract color channels and then alpha channel, because pnmtopng stupidly
# will not figure this out on its own
cat b.pam | \
	pamchannel -quiet 0 1 2 > c.pam
cat b.pam | \
	pamchannel -quiet 3 > c-alpha.pam

# convert to png with extracted alpha channel
pnmtopng -quiet -force -alpha=c-alpha.pam c.pam > resized-72x72.png

# clean up
rm -f {a,b,c,c-alpha}.pam