Update img-optimize

* avif support
This commit is contained in:
VirtuBox 2020-11-10 18:49:15 +01:00
parent cbe45eea8e
commit 5e1c6d1da2
No known key found for this signature in database
GPG Key ID: 22EB296C97BAD476
3 changed files with 31 additions and 12 deletions

View File

@ -6,14 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased] ## [Unreleased]
## [V2.0] - 2020-11-10
### Added ### Added
- quiet mode - quiet mode
- option --no-run-if-empty added to xargs - option --no-run-if-empty added to xargs
- scripts to compile optipng & libwebp from source - scripts to compile optipng & libwebp from source
- Avif (AV1 Image Format) support
### Changed ### Changed
- JPG are optimized as progressive JPG
- WebP and Avif newly created images are deleted in case of failure during conversion
## [V1.1] - 2019-04-05 ## [V1.1] - 2019-04-05
### Added ### Added

View File

@ -9,6 +9,7 @@
- jpegoptim for jpg optimization - jpegoptim for jpg optimization
- optipng for png optimization - optipng for png optimization
- cwebp for WebP conversion - cwebp for WebP conversion
- go-avif for Avif conversion
### From APT repositories ### From APT repositories
@ -36,6 +37,13 @@ curl -sL git.io/fjddn | sudo -E bash
curl -sL git.io/fjdd6 | sudo -E bash curl -sL git.io/fjdd6 | sudo -E bash
``` ```
### Go-Avif installation
```bash
sudo wget -qO /usr/local/bin/avif https://github.com/Kagami/go-avif/releases/download/v0.1.0/avif-linux-x64
sudo chmod +x /usr/local/bin/avif
```
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
## Installation ## Installation
@ -87,7 +95,7 @@ Examples:
img-optimize --jpg /var/www/images img-optimize --jpg /var/www/images
``` ```
## Update the script ### Update the script
To update the script, just run : To update the script, just run :
@ -95,7 +103,7 @@ To update the script, just run :
git -C $HOME/.img-optimize pull git -C $HOME/.img-optimize pull
``` ```
## Setup daily cronjob ### Setup daily cronjob
You just have to copy the scripts to /etc/cron.daily : You just have to copy the scripts to /etc/cron.daily :

View File

@ -7,7 +7,7 @@
# Author: VirtuBox # Author: VirtuBox
# License: M.I.T # License: M.I.T
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Version 1.2 - 2020-10-18 # Version 2.0 - 2020-11-10
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
CSI='\033[' CSI='\033['
@ -28,8 +28,9 @@ _help() {
echo " --png ..... optimize all png images" echo " --png ..... optimize all png images"
echo " --webp ..... convert all images in webp" echo " --webp ..... convert all images in webp"
echo " --avif ..... convert all images in avif" echo " --avif ..... convert all images in avif"
echo " --nowebp ..... optimize all png & jpg images" echo " --std ..... optimize all png & jpg images"
echo " --all ..... optimize all images (png + jpg + webp +avif)" echo " --next ..... convert all images in webp & avif"
echo " --all ..... optimize all images (png + jpg + webp + avif)"
echo " -i, --interactive ..... run img-optimize in interactive mode" echo " -i, --interactive ..... run img-optimize in interactive mode"
echo " -q, --quiet ..... run image optimization quietly" echo " -q, --quiet ..... run image optimization quietly"
echo " --path <images path> ..... define images path" echo " --path <images path> ..... define images path"
@ -61,11 +62,15 @@ else
--png) --png)
PNG_OPTIMIZATION="y" PNG_OPTIMIZATION="y"
;; ;;
--nowebp) --std)
JPG_OPTIMIZATION="y" JPG_OPTIMIZATION="y"
PNG_OPTIMIZATION="y" PNG_OPTIMIZATION="y"
WEBP_OPTIMIZATION="n" WEBP_OPTIMIZATION="n"
AVIF_OPTIMIZATION="n"
;; ;;
--next)
AVIF_OPTIMIZATION="y"
WEBP_OPTIMIZATION="y"
--webp) --webp)
WEBP_OPTIMIZATION="y" WEBP_OPTIMIZATION="y"
;; ;;
@ -173,9 +178,9 @@ if [ "$JPG_OPTIMIZATION" = "y" ]; then
echo -ne ' jpg optimization [..]\r' echo -ne ' jpg optimization [..]\r'
cd "$IMG_PATH" || exit 1 cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then if [ -n "$FIND_ARGS" ]; then
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -cmin "$FIND_ARGS" -print0 | xargs -r -0 jpegoptim "$JPG_ARGS" --preserve --strip-all -m82 find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -cmin "$FIND_ARGS" -print0 | xargs -r -0 jpegoptim "$JPG_ARGS" -p -s --all-progressive -m82
else else
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 | xargs -r -0 jpegoptim "$JPG_ARGS" --preserve --strip-all -m82 find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 | xargs -r -0 jpegoptim "$JPG_ARGS" -p -s -m82 --all-progressive
fi fi
echo -ne " jpg optimization [${CGREEN}OK${CEND}]\\r" echo -ne " jpg optimization [${CGREEN}OK${CEND}]\\r"
@ -221,10 +226,10 @@ if [ "$WEBP_OPTIMIZATION" = "y" ]; then
cd "$IMG_PATH" || exit 1 cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then if [ -n "$FIND_ARGS" ]; then
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -cmin "$FIND_ARGS" -print0 | xargs -0 -r -I {} \ find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -cmin "$FIND_ARGS" -print0 | xargs -0 -r -I {} \
bash -c "[ ! -f '{}.webp' ] && { cwebp $WEBP_ARGS -q 82 -mt '{}' -o '{}.webp'; }" bash -c "[ ! -f '{}.webp' ] && { cwebp $WEBP_ARGS -q 82 -mt '{}' -o '{}.webp || rm -f '{}.webp''; }"
else else
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 | xargs -0 -r -I {} \ find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 | xargs -0 -r -I {} \
bash -c "[ ! -f '{}.webp' ] && { cwebp $WEBP_ARGS -q 82 -mt '{}' -o '{}.webp'; }" bash -c "[ ! -f '{}.webp' ] && { cwebp $WEBP_ARGS -q 82 -mt '{}' -o '{}.webp' || rm -f '{}.webp'; }"
fi fi
echo -ne " jpg to webp conversion [${CGREEN}OK${CEND}]\\r" echo -ne " jpg to webp conversion [${CGREEN}OK${CEND}]\\r"
@ -235,7 +240,7 @@ if [ "$AVIF_OPTIMIZATION" = "y" ]; then
echo "Error: avif isn't installed" echo "Error: avif isn't installed"
exit 1 exit 1
} }
# convert png to webp # convert png to avif
echo -ne ' png to avif conversion [..]\r' echo -ne ' png to avif conversion [..]\r'
cd "$IMG_PATH" || exit 1 cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then if [ -n "$FIND_ARGS" ]; then
@ -248,7 +253,7 @@ if [ "$AVIF_OPTIMIZATION" = "y" ]; then
echo -ne " png to avif conversion [${CGREEN}OK${CEND}]\\r" echo -ne " png to avif conversion [${CGREEN}OK${CEND}]\\r"
echo -ne '\n' echo -ne '\n'
# convert jpg to webp # convert jpg to avif
echo -ne ' jpg to avif conversion [..]\r' echo -ne ' jpg to avif conversion [..]\r'
cd "$IMG_PATH" || exit 1 cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then if [ -n "$FIND_ARGS" ]; then