#!/bin/bash usage() { cat < EOF exit ${1:-0} } crush_jpg() { local img="$1" jpegoptim "${img}" } crush_png() { local img="$1" # apngopt likes to corrupt images. pngcrush -e .png.new "${img}" mv "${img}.new" "${img}" } crush() { case $1 in *.jpg|*.jpeg) crush_jpg "$1" ;; *.png) crush_png "$1" ;; *) echo "${0##*/}: unsupported format: $1" >&2 ;; esac } main() { set -e while [[ $# -ne 0 ]] ; do case $1 in -h) usage ;; -x) set -x; shift ;; -*) usage 1 ;; *) crush "$1"; shift ;; esac done } main "$@"