aboutsummaryrefslogtreecommitdiff
path: root/bootstrap
diff options
context:
space:
mode:
authorThedro Neely <thedroneely@gmail.com>2021-03-09 20:01:16 -0500
committerThedro Neely <thedroneely@gmail.com>2021-03-09 20:04:48 -0500
commitc7278474d35d71d6d3b112707b3d5eaf48ec13a4 (patch)
tree82aadddd0d1cf83b4beffa684ff0a0413bcb685f /bootstrap
parentaf5e135ae3c4493351861142a9f16f26d1b573b2 (diff)
downloadthedroneely.com-c7278474d35d71d6d3b112707b3d5eaf48ec13a4.tar.gz
thedroneely.com-c7278474d35d71d6d3b112707b3d5eaf48ec13a4.tar.bz2
thedroneely.com-c7278474d35d71d6d3b112707b3d5eaf48ec13a4.zip
bootstrap/helpers/thumbnails: Compress everything and support webp
Diffstat (limited to 'bootstrap')
-rwxr-xr-xbootstrap/helpers/thumbnails62
-rwxr-xr-xbootstrap/helpers/update-thumbnails9
2 files changed, 62 insertions, 9 deletions
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.;