Image manipulation with WebP and ImageMagick
WebP conversion
WebP compression reduces image sizes considerably for web usage while maintaining good enough quality. You can install webp using a package manager or download the binaries for your operating system:
# on macos
brew install webp
# on ubuntu/debian
apt update && apt install -y --no-install-recommends webp
# rhel
dnf in -y epel-release
dnf config-manager --set-enabled crb
dnf in -y libwebp-tools
Or download precompiled binaries for your operation system - https://developers.google.com/speed/webp/docs/precompiled
VERSION="1.6.0"
wget https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-${VERSION}-linux-x86-64.tar.gz
tar -xf libwebp-${VERSION}-linux-x86-64.tar.gz
rm libwebp-${VERSION}-linux-x86-64.tar.gz
export PATH=${PWD}/libwebp-${VERSION}-linux-x86-64/bin:$PATH
Convert image:
cwebp in.png -o out.webp
# adjust quality (default 75)
cwebp -q 80 in.png -o out.webp
Batch conversion:
for file in $( ls *.png); do cwebp "${file}" -o "${file%*.png}.webp"; done
Manipulate image with ImageMagick
Install in Ubuntu/Debian:
apt update && apt install imagemagick
Resize an image:
convert input.jpg -resize 800x output.jpg
convert input.jpg -resize 800x -quality 80 output.jpg
convert input.jpg -resize 800x -quality 80 -filter Lanczos -sharpen 0x0.8 output.jpg
Resize using alternative magick
command:
magick input.jpg -filter Lanczos -resize 800x -unsharp 0x0.8+0.8+0.02 -quality 80 output.jpg
Crop image:
# crop (WxH+x_offset+y_offset)
magick in.jpg -crop 800x1200+100+200 +repage out.jpg
magick in.jpg -crop 60%x40%+100+200 +repage out.jpg
We can use magick
command to convert to webp
alongside resize:
magick in.jpg -auto-orient -filter Lanczos -resize 800x \
-unsharp 0x0.8+0.8+0.02 -strip \
-define webp:method=6 -quality 80 out.webp