-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptimize.sh
63 lines (54 loc) · 1.38 KB
/
optimize.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
filename=$(basename $1)
extension="${filename##*.}"
filename="${filename%.*}"
function compare {
optimized_size=$(stat --printf="%s" "$1")
input_size=$(stat --printf="%s" "$2")
# Only replace input if it is smaller
if [ "$input_size" -gt "$optimized_size" ]; then
echo "Input $3 file optimized"
mv "$1" "$2"
else
echo "Unable to optimize $3 any further"
rm "$1"
fi
}
function removeIfUseless {
optimized_size=$(stat --printf="%s" "$1")
input_size=$(stat --printf="%s" "$2")
# Remove if optimized image is larger
if [ "$input_size" -ge "$optimized_size" ]; then
echo "Optimized $3 generated"
else
rm "$1"
fi
}
# Generate WEBP
for ext in jpeg jpg gif png; do
if [[ $extension == $ext ]]; then
cwebp "$1" -q 80 -o "$filename.webp" -quiet
removeIfUseless "$filename.webp" $1 "webp"
fi
done
# Generate JXR
for ext in jpeg jpg; do
if [[ $extension == $ext ]]; then
convert "$1" "$filename.bmp"
JxrEncApp -i "$filename.bmp" -o "$filename.jxr" -q 0.65
rm "$filename.bmp"
removeIfUseless "$filename.jxr" $1 "jxr"
fi
done
# Optimize / Overwrite input JPG
for ext in jpeg jpg; do
if [[ $extension == $ext ]]; then
mozjpeg -optimize "$1" > "$filename.tmp"
compare "$filename.tmp" "$1" "jpg"
fi
done
# Optimize / Overwrite input PNG
if [[ $extension == "png" ]]; then
pngquant --speed 1 --force -o "$filename.tmp" -- "$1"
compare "$filename.tmp" "$1" "png"
fi