Add avif support

This commit is contained in:
VirtuBox 2020-10-18 18:49:56 +02:00
parent 1b458c423c
commit 32e33d1f34
No known key found for this signature in database
GPG Key ID: 22EB296C97BAD476
3 changed files with 90 additions and 2 deletions

39
.gitattributes vendored Normal file
View File

@ -0,0 +1,39 @@
# Auto detect text files and perform LF normalization
* text=auto
# Documents
*.md text eol=lf
*.tex text diff=tex
*.adoc text
*.textile text
*.mustache text eol=lf
*.csv text
*.tab text
*.tsv text
*.txt text
*.sql text
# Scripts
*.bash text eol=lf
*.fish text eol=lf
*.sh text eol=lf
# Source files
# ============
*.pxd text diff=python
*.py text diff=python
*.py3 text diff=python
*.pyc text diff=python
*.pyd text diff=python
*.pyo text diff=python
*.pyw text diff=python
*.pyx text diff=python
*.pyz text diff=python
#
# Exclude files from exporting
#
.gitattributes export-ignore
.gitignore export-ignore

View File

@ -20,6 +20,8 @@ script:
- sudo apt-get install jpegoptim -y - sudo apt-get install jpegoptim -y
- sudo -E time bash scripts/install-webp.sh > /dev/null 2>&1 - sudo -E time bash scripts/install-webp.sh > /dev/null 2>&1
- sudo -E time bash scripts/install-optipng.sh > /dev/null 2>&1 - sudo -E time bash scripts/install-optipng.sh > /dev/null 2>&1
- 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
- sudo cp optimize.sh /usr/local/bin/img-optimize - sudo cp optimize.sh /usr/local/bin/img-optimize
- sudo chmod 755 /usr/local/bin/img-optimize - sudo chmod 755 /usr/local/bin/img-optimize
- /usr/local/bin/img-optimize --all - /usr/local/bin/img-optimize --all

View File

@ -7,7 +7,7 @@
# Author: VirtuBox # Author: VirtuBox
# License: M.I.T # License: M.I.T
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
# Version 1.1 - 2019-09-24 # Version 1.2 - 2020-10-18
# ---------------------------------------------------------------------------- # ----------------------------------------------------------------------------
CSI='\033[' CSI='\033['
@ -27,8 +27,9 @@ _help() {
echo " --jpg ..... optimize all jpg images" echo " --jpg ..... optimize all jpg images"
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 " --nowebp ..... optimize all png & jpg images" echo " --nowebp ..... optimize all png & jpg images"
echo " --all ..... optimize all images (png + jpg + webp)" 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"
@ -68,10 +69,14 @@ else
--webp) --webp)
WEBP_OPTIMIZATION="y" WEBP_OPTIMIZATION="y"
;; ;;
--avif)
AVIF_OPTIMIZATION="y"
;;
--all) --all)
PNG_OPTIMIZATION="y" PNG_OPTIMIZATION="y"
JPG_OPTIMIZATION="y" JPG_OPTIMIZATION="y"
WEBP_OPTIMIZATION="y" WEBP_OPTIMIZATION="y"
AVIF_OPTIMIZATION="y"
;; ;;
-i | --interactive) -i | --interactive)
INTERACTIVE_MODE="1" INTERACTIVE_MODE="1"
@ -143,6 +148,16 @@ if [ "$INTERACTIVE_MODE" = "1" ]; then
echo "" echo ""
echo "" echo ""
fi fi
if [ -z "$AVIF_OPTIMIZATION" ]; then
echo ""
echo "Do you want to convert all jpg & png images to WebP in $IMG_PATH ? (y/n)"
while [[ $AVIF_OPTIMIZATION != "y" && $AVIF_OPTIMIZATION != "n" ]]; do
echo "Select an option [y/n]: "
read -r AVIF_OPTIMIZATION
done
echo ""
echo ""
fi
fi fi
################################## ##################################
@ -215,6 +230,38 @@ if [ "$WEBP_OPTIMIZATION" = "y" ]; then
echo -ne " jpg to webp conversion [${CGREEN}OK${CEND}]\\r" echo -ne " jpg to webp conversion [${CGREEN}OK${CEND}]\\r"
echo -ne '\n' echo -ne '\n'
fi fi
if [ "$AVIF_OPTIMIZATION" = "y" ]; then
[ -z "$(command -v avif)" ] && {
echo "Error: avif isn't installed"
exit 1
}
# convert png to webp
echo -ne ' png to avif conversion [..]\r'
cd "$IMG_PATH" || exit 1
if [ -n "$FIND_ARGS" ]; then
find . -type f -iname "*.png" -cmin "$FIND_ARGS" -print0 | xargs -0 -r -I {} \
bash -c "[ ! -f '{}.avif' ] && { avif -e '{}' -o '{}.avif'; }"
else
find . -type f -iname "*.png" -print0 | xargs -0 -r -I {} \
bash -c "[ ! -f '{}.avif' ] && { avif -e '{}' -o '{}.avif'; }"
fi
echo -ne " png to avif conversion [${CGREEN}OK${CEND}]\\r"
echo -ne '\n'
# convert jpg to webp
echo -ne ' jpg to avif conversion [..]\r'
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 '{}.avif' ] && { avif -e '{}' -o '{}.avif'; }"
else
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 | xargs -0 -r -I {} \
bash -c "[ ! -f '{}.avif' ] && { avif -e '{}' -o '{}.avif'; }"
fi
echo -ne " jpg to avif conversion [${CGREEN}OK${CEND}]\\r"
echo -ne '\n'
fi
# We're done ! # We're done !
echo "" echo ""