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]
## [V2.0] - 2020-11-10
### Added
- quiet mode
- option --no-run-if-empty added to xargs
- scripts to compile optipng & libwebp from source
- Avif (AV1 Image Format) support
### 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
### Added

View File

@ -9,6 +9,7 @@
- jpegoptim for jpg optimization
- optipng for png optimization
- cwebp for WebP conversion
- go-avif for Avif conversion
### From APT repositories
@ -36,6 +37,13 @@ curl -sL git.io/fjddn | 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
@ -87,7 +95,7 @@ Examples:
img-optimize --jpg /var/www/images
```
## Update the script
### Update the script
To update the script, just run :
@ -95,7 +103,7 @@ To update the script, just run :
git -C $HOME/.img-optimize pull
```
## Setup daily cronjob
### Setup daily cronjob
You just have to copy the scripts to /etc/cron.daily :

View File

@ -7,7 +7,7 @@
# Author: VirtuBox
# License: M.I.T
# ----------------------------------------------------------------------------
# Version 1.2 - 2020-10-18
# Version 2.0 - 2020-11-10
# ----------------------------------------------------------------------------
CSI='\033['
@ -28,7 +28,8 @@ _help() {
echo " --png ..... optimize all png images"
echo " --webp ..... convert all images in webp"
echo " --avif ..... convert all images in avif"
echo " --nowebp ..... optimize all png & jpg images"
echo " --std ..... optimize all png & jpg images"
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 " -q, --quiet ..... run image optimization quietly"
@ -61,11 +62,15 @@ else
--png)
PNG_OPTIMIZATION="y"
;;
--nowebp)
--std)
JPG_OPTIMIZATION="y"
PNG_OPTIMIZATION="y"
WEBP_OPTIMIZATION="n"
AVIF_OPTIMIZATION="n"
;;
--next)
AVIF_OPTIMIZATION="y"
WEBP_OPTIMIZATION="y"
--webp)
WEBP_OPTIMIZATION="y"
;;
@ -173,9 +178,9 @@ if [ "$JPG_OPTIMIZATION" = "y" ]; then
echo -ne ' jpg optimization [..]\r'
cd "$IMG_PATH" || exit 1
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
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
echo -ne " jpg optimization [${CGREEN}OK${CEND}]\\r"
@ -221,10 +226,10 @@ if [ "$WEBP_OPTIMIZATION" = "y" ]; then
cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then
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
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
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"
exit 1
}
# convert png to webp
# convert png to avif
echo -ne ' png to avif conversion [..]\r'
cd "$IMG_PATH" || exit 1
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 '\n'
# convert jpg to webp
# convert jpg to avif
echo -ne ' jpg to avif conversion [..]\r'
cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then