mirror of
http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/blog-contributions.git
synced 2025-07-02 11:56:40 +00:00
add webp compression script
This commit is contained in:
parent
8f33f954b7
commit
a028f3a091
1 changed files with 43 additions and 0 deletions
43
imagecompress.sh
Normal file
43
imagecompress.sh
Normal file
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Run before executing:
|
||||
# sudo apt install webp parallel
|
||||
|
||||
# Script will compress all images in directory given in the first parameter.
|
||||
# JPEGs are lossy compressed, PNGs are losslessly compressed
|
||||
# $ ./imagecompress.sh # current directory
|
||||
# $ ./imagecompress.sh opsec/ # specified directory
|
||||
# Already compressed WebP image will be kept, it only cares about image/png and image/jpeg mime.
|
||||
# Compression commands are run in parallel using all available cores but it can take some time at first.
|
||||
|
||||
# WARNING:
|
||||
# cwebp by default removes all EXIF, XMP and ICC tags.
|
||||
# Images rotated only through Exif tag can have wrong orientation after compression.
|
||||
# However we shouldn't have too much Exif here anyways.
|
||||
|
||||
DIR="${1:-$(pwd)}"
|
||||
|
||||
calculate_size() {
|
||||
du -sh --exclude='.git' "$1" | awk '{print $1}'
|
||||
}
|
||||
|
||||
initial_size=$(calculate_size "$DIR")
|
||||
|
||||
echo "Updating JPEGs"
|
||||
|
||||
# Lossy compression for JPEGs
|
||||
find "$DIR" -print0 | parallel -0 '
|
||||
[[ $(file --mime-type -b "{}") == "image/jpeg" ]] &&
|
||||
cwebp "{}" -q 65 -m 6 -o "{}"
|
||||
'
|
||||
|
||||
echo "Updating PNGs"
|
||||
|
||||
# Lossless compression for PNGs
|
||||
find "$DIR" -print0 | parallel -0 '
|
||||
[[ $(file --mime-type -b "{}") == "image/png" ]] &&
|
||||
cwebp "{}" -q 100 -m 6 -lossless -o "{}"
|
||||
'
|
||||
|
||||
final_size=$(calculate_size "$DIR")
|
||||
echo "Compressed $initial_size -> $final_size
|
Loading…
Add table
Add a link
Reference in a new issue