From e91fee0836fceb4fd16f727c4a1acaa51681ae65 Mon Sep 17 00:00:00 2001 From: VirtuBox Date: Wed, 11 Nov 2020 12:56:44 +0100 Subject: [PATCH] Update Changelog and Readme --- CHANGELOG.md | 1 + README.md | 17 ++-- docs/README.md | 253 ++++++++++++++++++++++++++----------------------- 3 files changed, 145 insertions(+), 126 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96da192..09c1f3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - option --no-run-if-empty added to xargs - scripts to compile optipng & libwebp from source - Avif (AV1 Image Format) support +- Avoid optimizing the same image at the same moment [PR #12](https://github.com/VirtuBox/img-optimize/pull/12) ### Changed diff --git a/README.md b/README.md index e8643a4..fa78b7a 100644 --- a/README.md +++ b/README.md @@ -81,18 +81,23 @@ Bash script to optimize your images and convert them in WebP Usage: img-optimize [options] If images path isn't defined, img-optimize will use the current directory Options: - --jpg ..... optimize all jpg images - --png ..... optimize all png images - --webp ..... convert all images in webp - --nowebp ..... optimize all png & jpg images - --all ..... optimize all images (png + jpg + webp) + --jpg ..... optimize all jpg images + --png ..... optimize all png images + --webp ..... convert all images in webp + --avif ..... convert all images in avif + --std ..... optimize all png & jpg images + --next ..... convert all images in webp & avif + --all ..... optimize all images (png + jpg + webp + avif) -i, --interactive ..... run img-optimize in interactive mode -q, --quiet ..... run image optimization quietly + --path ..... define images path Other options : -h, --help, help ... displays this help information + --cmin [+|-] ... File's status was last changed n minutes ago. + act find cmin argument (+n : greater than n, -n : less than n, n : exactly n) Examples: optimize all jpg images in /var/www/images - img-optimize --jpg /var/www/images + img-optimize --jpg --path /var/www/images ``` ### Update the script diff --git a/docs/README.md b/docs/README.md index 4e8dfaa..fa78b7a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,120 +1,133 @@ -# Image optimization bash script - -![img-optimize](https://raw.githubusercontent.com/VirtuBox/img-optimize/master/img-optimize.png) - -[![Travis](https://img.shields.io/travis/virtubox/img-optimize.svg)](https://travis-ci.org/VirtuBox/img-optimize) ![GitHub](https://img.shields.io/github/license/VirtuBox/img-optimize.svg) ![GitHub release](https://img.shields.io/github/release/VirtuBox/img-optimize.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/VirtuBox/img-optimize.svg) ![Github stars](https://img.shields.io/github/stars/VirtuBox/img-optimize.svg) - -## Prerequisite - -- jpegoptim for jpg optimization -- optipng for png optimization -- cwebp for WebP conversion - -### From APT repositories - -Debian/Ubuntu : - -```bash -sudo apt install jpegoptim optipng webp -y -``` - -Centos 7 : - -```bash -sudo yum install optipng jpegoptim libwebp-tools -y -``` - -### Compile the latest release (optipng & libwebp) - -For Debian/Ubuntu (available in scripts folder) : - -```bash -# optipng -curl -sL git.io/fjddn | sudo -E bash - -# libwebp -curl -sL git.io/fjdd6 | sudo -E bash -``` - --------------------------------------------------------------------------------- - -## Installation - -1) Clone the repository - -```bash -git clone https://github.com/VirtuBox/img-optimize.git $HOME/.img-optimize -``` - -2) Install the script - -**Method 1** : Add an alias in .bashrc - -With this method img-optimize can only be used by the current user - -```bash -echo "alias img-optimize=$HOME/.img-optimize/optimize.sh" >> $HOME/.bashrc -source $HOME/.bashrc -``` - -**Method 2** : Add an alias to the script in /usr/local/bin - -With this method img-optimize can be used by all users - -```bash -sudo ln -s $HOME/.img-optimize/optimize.sh /usr/local/bin/img-optimize -sudo chmod +x /usr/local/bin/img-optimize -``` - -## Usage - -```bash -Bash script to optimize your images and convert them in WebP -Usage: img-optimize [options] -If images path isn't defined, img-optimize will use the current directory - Options: - --jpg ..... optimize all jpg images - --png ..... optimize all png images - --webp ..... convert all images in webp - --nowebp ..... optimize all png & jpg images - --all ..... optimize all images (png + jpg + webp) - -i, --interactive ..... run img-optimize in interactive mode - -q, --quiet ..... run image optimization quietly - Other options : - -h, --help, help ... displays this help information -Examples: - optimize all jpg images in /var/www/images - img-optimize --jpg /var/www/images -``` - -## Update the script - -To update the script, just run : - -```bash -git -C $HOME/.img-optimize pull -``` - -## Setup daily cronjob - -You just have to copy the scripts to /etc/cron.daily : - -```bash -cp $HOME/.img-optimize/crons/jpg-png-cron.sh /etc/cron.daily/jpg-png-cron -cp $HOME/.img-optimize/crons/jpg-png-cron.sh /etc/cron.daily/webp-cron - -chmod +x /etc/cron.daily/jpg-png-cron -chmod +x /etc/cron.daily/webp-cron -``` - -Then just edit your websites path set with the variables `sites` at the beginning of the cron scripts. - -## Warning - -Conversion process can take a while, you can use `tmux` to launch the script and be able to close your ssh connection without interrupting conversion. Then just use `tmux attach` to login back in your tmux session. - -## Credits - -- WebP conversion script was inspired by this [DigitalOcean Community Tutorial](https://www.digitalocean.com/community/tutorials/how-to-create-and-serve-webp-images-to-speed-up-your-website) - -- Tutorial about webp conversion available on [jesuisadmin.fr](https://jesuisadmin.fr/convertir-vos-images-en-webp-nginx/) (in french) +# Image optimization bash script + +![img-optimize](https://raw.githubusercontent.com/VirtuBox/img-optimize/master/img-optimize.png) + +[![Travis](https://travis-ci.org/VirtuBox/img-optimize.svg?branch=master)](https://travis-ci.org/VirtuBox/img-optimize) ![GitHub](https://img.shields.io/github/license/VirtuBox/img-optimize.svg) ![GitHub release](https://img.shields.io/github/release/VirtuBox/img-optimize.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/VirtuBox/img-optimize.svg) ![Github stars](https://img.shields.io/github/stars/VirtuBox/img-optimize.svg) + +## Prerequisite + +- jpegoptim for jpg optimization +- optipng for png optimization +- cwebp for WebP conversion +- go-avif for Avif conversion + +### From APT repositories + +Debian/Ubuntu : + +```bash +sudo apt install jpegoptim optipng webp -y +``` + +Centos 7 : + +```bash +sudo yum install optipng jpegoptim libwebp-tools -y +``` + +### Compile the latest release (optipng & libwebp) + +For Debian/Ubuntu (available in scripts folder) : + +```bash +# optipng +curl -sL git.io/fjddn | sudo -E bash + +# libwebp +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 + +1) Clone the repository + +```bash +git clone https://github.com/VirtuBox/img-optimize.git $HOME/.img-optimize +``` + +2) Install the script + +**Method 1** : Add an alias in .bashrc + +With this method img-optimize can only be used by the current user + +```bash +echo "alias img-optimize=$HOME/.img-optimize/optimize.sh" >> $HOME/.bashrc +source $HOME/.bashrc +``` + +**Method 2** : Add an alias to the script in /usr/local/bin + +With this method img-optimize can be used by all users + +```bash +sudo ln -s $HOME/.img-optimize/optimize.sh /usr/local/bin/img-optimize +sudo chmod +x /usr/local/bin/img-optimize +``` + +## Usage + +```bash +Bash script to optimize your images and convert them in WebP +Usage: img-optimize [options] +If images path isn't defined, img-optimize will use the current directory + Options: + --jpg ..... optimize all jpg images + --png ..... optimize all png images + --webp ..... convert all images in webp + --avif ..... convert all images in avif + --std ..... optimize all png & jpg images + --next ..... convert all images in webp & avif + --all ..... optimize all images (png + jpg + webp + avif) + -i, --interactive ..... run img-optimize in interactive mode + -q, --quiet ..... run image optimization quietly + --path ..... define images path + Other options : + -h, --help, help ... displays this help information + --cmin [+|-] ... File's status was last changed n minutes ago. + act find cmin argument (+n : greater than n, -n : less than n, n : exactly n) +Examples: + optimize all jpg images in /var/www/images + img-optimize --jpg --path /var/www/images +``` + +### Update the script + +To update the script, just run : + +```bash +git -C $HOME/.img-optimize pull +``` + +### Setup daily cronjob + +You just have to copy the scripts to /etc/cron.daily : + +```bash +cp $HOME/.img-optimize/crons/jpg-png-cron.sh /etc/cron.daily/jpg-png-cron +cp $HOME/.img-optimize/crons/jpg-png-cron.sh /etc/cron.daily/webp-cron + +chmod +x /etc/cron.daily/jpg-png-cron +chmod +x /etc/cron.daily/webp-cron +``` + +Then just edit your websites path set with the variables `sites` at the beginning of the cron scripts. + +## Warning + +Conversion process can take a while, you can use `tmux` to launch the script and be able to close your ssh connection without interrupting conversion. Then just use `tmux attach` to login back in your tmux session. + +## Credits + +- WebP conversion script was inspired by this [DigitalOcean Community Tutorial](https://www.digitalocean.com/community/tutorials/how-to-create-and-serve-webp-images-to-speed-up-your-website) + +- Tutorial about webp conversion available on [jesuisadmin.fr](https://jesuisadmin.fr/convertir-vos-images-en-webp-nginx/) (in french)