From 9ec93e4dc72fc4b90f420287be05685212d35e29 Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 28 Nov 2021 17:40:42 -0600 Subject: [PATCH] docker: replace libjpeg-turbo with mozjpeg. Build vips with mozjpeg instead of libjpeg-turbo. Mozjpeg is slower but has better compression. https://github.com/mozilla/mozjpeg https://libjpeg-turbo.org/About/Mozjpeg https://siipo.la/blog/is-webp-really-better-than-jpeg https://www.ctrl.blog/entry/webp-avif-comparison.html http://web.archive.org/web/20151204210024/http://people.mozilla.org/~josh/lossy_compressed_image_study_july_2014/ --- config/docker/build-base-image.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/config/docker/build-base-image.sh b/config/docker/build-base-image.sh index b3942ea9c..0e3a60303 100755 --- a/config/docker/build-base-image.sh +++ b/config/docker/build-base-image.sh @@ -5,6 +5,7 @@ set -xeuo pipefail RUBY_VERSION="${RUBY_VERSION:-3.0.3}" VIPS_VERSION="${VIPS_VERSION:-8.12.1}" FFMPEG_VERSION="${FFMPEG_VERSION:-4.4.1}" +MOZJPEG_VERSION="${MOZJPEG_VERSION:-4.0.3}" EXIFTOOL_VERSION="${EXIFTOOL_VERSION:-12.30}" OPENRESTY_VERSION="${OPENRESTY_VERSION:-1.19.9.1}" POSTGRESQL_CLIENT_VERSION="${POSTGRESQL_CLIENT_VERSION:-14}" @@ -14,15 +15,16 @@ COMMON_BUILD_DEPS=" " RUBY_BUILD_DEPS="libssl-dev zlib1g-dev libgmp-dev" FFMPEG_BUILD_DEPS="libvpx-dev nasm" +MOZJPEG_BUILD_DEPS="cmake nasm libpng-dev zlib1g-dev" VIPS_BUILD_DEPS=" libfftw3-dev libwebp-dev liborc-dev liblcms2-dev libpng-dev - libjpeg-turbo8-dev libexpat1-dev libglib2.0-dev libgif-dev libexif-dev libheif-dev + libexpat1-dev libglib2.0-dev libgif-dev libexif-dev libheif-dev " EXIFTOOL_RUNTIME_DEPS="perl perl-modules libarchive-zip-perl" DANBOORU_RUNTIME_DEPS=" ca-certificates mkvtoolnix rclone libpq5 openssl libgmpxx4ldbl zlib1g libfftw3-3 libwebp6 libwebpmux3 libwebpdemux2 liborc-0.4.0 liblcms2-2 - libpng16-16 libjpeg-turbo8 libexpat1 libglib2.0 libgif7 libexif12 libheif1 libvpx6 + libpng16-16 libexpat1 libglib2.0 libgif7 libexif12 libheif1 libvpx6 libseccomp2 libseccomp-dev " COMMON_RUNTIME_DEPS=" @@ -37,6 +39,22 @@ install_asdf() { git clone https://github.com/asdf-vm/asdf.git ~/.asdf } +install_mozjpeg() { + apt_install $MOZJPEG_BUILD_DEPS + + MOZJPEG_URL="https://github.com/mozilla/mozjpeg/archive/refs/tags/v${MOZJPEG_VERSION}.tar.gz" + curl -L "$MOZJPEG_URL" | tar -C /usr/local/src -xzvf - + cd /usr/local/src/mozjpeg-${MOZJPEG_VERSION} + + mkdir build + cd build + cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. + make -j "$(nproc)" + make install + + cjpeg -version +} + install_vips() { apt_install $VIPS_BUILD_DEPS @@ -148,6 +166,7 @@ apt-get update apt_install $COMMON_BUILD_DEPS $COMMON_RUNTIME_DEPS install_asdf install_exiftool +install_mozjpeg install_ffmpeg install_vips install_ruby