All pastes #405186 Raw Edit

png_recompress.sh

public shellscript v1 · immutable
·published 2007-03-21 16:05 UTC
rendered paste body
#!/bin/bash# $Id: png_recompress.sh 4635 2007-01-22 14:31:43Z anmaster $# This script recompressess .png files using pngcrush and# optipng to get the smallest images. All recompression is# looseless.## NOTE: files must be in same directory as the script is run from!# Examples:#  ~/supertux/tools/image_recompress.sh *.png#   (good)#  ~/supertux/tools/image_recompress.sh */*.png#   (bad, does not work)## TODO:#  * Make it work recursivly#  * Make it work on files not in current directoryif [ -z "$1" ] || [ "$1" == "--help" ]; then	echo "Usage: $(basename $0) files..."	echo -e '\e[1mNOTE: Files must be in same directory as the script is run from!\e[0m'	echo 'Examples:'	echo "  $0 *.png"	echo '     this works'	echo "  $0 */*.png"	echo '     this does NOT work'	exit 1fi# Check that the tools we use exist:if ! type pngcrush > /dev/null 2>&1; then	echo "Can't find pngcrush!"	echo "This script depends on the pngcrush tool to be in PATH."	echo "Please install it or, if it is already installed add the"	echo "directory it is in to PATH and try again."	exit 1fiif ! type optipng > /dev/null 2>&1; then	echo "Can't find optipng!"	echo "This script depends on the optipng tool to be in PATH."	echo "Please install it or, if it is already installed add the"	echo "directory it is in to PATH and try again."	exit 1fiecho -e "Please wait, this can take a \e[1mlong\e[0m time."echo -e "\n\n\n\e[1mPass 1: pngcrush\e[0m\n\n\n"for image in "$@"; do	echo -e "\e[1m$image\e[0m : $(du -b $image | awk '{print $1}')"	newsize="$(pngcrush -reduce -brute -d c "$image" | grep -E "filesize reduction")"	if [[ $newsize =~ ".+reduction.+" ]]; then		echo "$newsize"		cp -v "c/$image" "$image"	fi	echodonerm -rvf c#exit 0echo -e "\n\n\n\e[1mPass 2: optipng\e[0m\n\n\n"for image in "$@"; do	echo -e "\e[1m$image\e[0m : $(du -b $image | awk '{print $1}')"	newsize="$(optipng -i 0 -o 7 -dir out "$image" | grep -E '^Output file size')"	echo "$newsize"	if [[ $newsize =~ ".+decrease.+" ]]; then		cp -v "out/$image" "$image"	else		rm -v "out/$image"	fi	echodonerm -rvf out