From c7278474d35d71d6d3b112707b3d5eaf48ec13a4 Mon Sep 17 00:00:00 2001 From: Thedro Neely Date: Tue, 9 Mar 2021 20:01:16 -0500 Subject: bootstrap/helpers/thumbnails: Compress everything and support webp --- bootstrap/helpers/thumbnails | 62 +++++++++++++++++++++++++++++++++++++ bootstrap/helpers/update-thumbnails | 9 ------ 2 files changed, 62 insertions(+), 9 deletions(-) create mode 100755 bootstrap/helpers/thumbnails delete mode 100755 bootstrap/helpers/update-thumbnails (limited to 'bootstrap') diff --git a/bootstrap/helpers/thumbnails b/bootstrap/helpers/thumbnails new file mode 100755 index 0000000..e10d5d3 --- /dev/null +++ b/bootstrap/helpers/thumbnails @@ -0,0 +1,62 @@ +#!/bin/sh -eu + +timestamp='.update-thumbnails' +directory='images' +jpegoptim='jpegoptim --strip-all --verbose' +jpegoptim_images="$jpegoptim --max 80" +jpegoptim_thumbnails="$jpegoptim --max 20" +pngquant='pngquant --skip-if-larger --strip --verbose --ext .png --force' +pngquant_images="$pngquant --quality 80" +pngquant_thumbnails="$pngquant --quality 20" +cwebp='cwebp -m 6' +cwebp_images="$cwebp -near_lossless 0 -q 80" +cwebp_thumbnails="$cwebp -q 20" +gif2webp='gif2webp -min_size -loop_compatibility -metadata none -m 6 -q 80' +gifsicle='gifsicle --optimize=3 --crop 270x160 --colors=64 --lossy=100' +mogrify_thumbnails='mogrify -path thumbnails -auto-orient -quiet -thumbnail x222' + +cd "$directory" || exit 1; +mkdir -p thumbnails; + +for image in *; do + + file=$(file --mime-type "$image") + name=${image%.*} + mime=${file#*: } + + if test "$image" -nt "$timestamp"; then + + while [ "$mime" = "image/png" ] || [ "$mime" = "image/jpeg" ]; do + { [ -f "$name.png" ] && [ -f "$name.jpg" ]; } && break; + mogrify -format jpg -quiet "$name.png" || true; + mogrify -format png -quiet "$name.jpg" || true; + done + + if [ "$mime" = "image/png" ] || [ "$mime" = "image/png" ]; then + + $pngquant_images "$name.png" || true; + $mogrify_thumbnails "$name.png"; + $pngquant_thumbnails "thumbnails/$name.png" || true; + + $jpegoptim_images "$name.jpg"; + $mogrify_thumbnails "$name.jpg"; + $jpegoptim_thumbnails "thumbnails/$name.jpg"; + + if [ "$(wc -c < "$name.png")" -lt "$(wc -c < "$name.jpg")" ]; then + $cwebp_images "$name.png" -o "$name.webp"; + $cwebp_thumbnails "thumbnails/$name.png" -o "thumbnails/$name.webp"; + else + $cwebp_images "$name.jpg" -o "$name.webp"; + $cwebp_thumbnails "thumbnails/$name.jpg" -o "thumbnails/$name.webp"; + fi + fi + + if [ "$mime" = "image/gif" ]; then + $gif2webp "$image" -o "$name.webp"; + $gifsicle "$image" "#0-50" -o "thumbnails/$image"; + fi + fi +done + +touch "$timestamp"; +printf "Images and thumbnails in '%s' updated.\n" "$PWD"; diff --git a/bootstrap/helpers/update-thumbnails b/bootstrap/helpers/update-thumbnails deleted file mode 100755 index 7411230..0000000 --- a/bootstrap/helpers/update-thumbnails +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -eu -cd images || exit 1; -mogrify -path thumbnails -auto-orient -quiet -thumbnail x222 $(find . -maxdepth 1 -regex '.*\.\(jpg\|png\)' -type f -mmin -60); -mogrify -format png -quiet thumbnails/*.jpg || true; -rm -rf thumbnails/*.jpg; -find . -name '*.png' -mmin -60 -exec pngquant -v --quality 85 --ext .png --force {} \; -find . -name '*.jpg' -mmin -60 -exec jpegoptim -v -m 85 {} + -touch .update-thumbnails; -echo Image Thumbnails in "'$(pwd)'" updated.; -- cgit v1.2.3