I had a problem where I had a lot of web images in different formats (png, jpg, gif) and wanted to run a scenario of how much space I'd be able to save by converting all the images to low-quality jpeg. The following bash script expects a wildcard argument (e.g., *.jpg, *.gif, *.*) then creates a directory 'low' and makes low-quality versions of all the images in the argument in the low directory.
#!/bin/bash
FILES="$@"
if ! [-d 'low'] # if low doesn't exist, make it
then mkdir 'low';
fi
for i in $FILES;
do
# find the extension on files that may have multiple periods or
# extensions like 'jpeg'
NF=$(echo $i | awk -F "." '{print NF}');
NF=$(($NF - 1));
EXT=$(echo $i | awk -F "." '{print $NF}');
# convert image using 50% quality and save in 'low' folder as jpg
sips -s format jpeg -s formatOptions 50% $i --out "low/"$(echo $i | sed "s/"$EXT"/jpg/g")
done