愈发感受 webp 格式的强大,在博客里大部分用例下使用 webp 可以使图片占用的空间降低一个数量级,所以目前所有的图片资源都要转成 webp 后使用,一个一个转换效率太低,于是写了个脚本,可以批量将本目录下的常见格式图片转换为 webp 格式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #!/usr/bin/env bash
# 创建备份文件夹 mkdir "bak"
# 利用ls和正则获取当前目录下的所有图片路径存入数组 images=$(ls *.{png,jpg})
for image in $images do # -q 90 指定转换质量,经试验这个值效果和压缩率都不错 cwebp $image -q 90 -o ${image%.*}.webp mv $image ./bak/$image done
|
更新(2023-07-04)
下面的脚本可以实现当原始图片尺寸超出指定大小时,自动对其进行缩放
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
| #!/usr/bin/env bash
# 设置宽高的最大值 MAXWH=2160
# 创建备份文件夹 mkdir "bak"
# 利用ls和正则获取当前目录下的所有图片路径存入数组 images=$(ls *.{png,jpg})
for image in $images do size=$(identify $image | awk '{print $3}') wh=(${size//x/ }) w=${wh[0]} h=${wh[1]} resize=''
if [ $w -gt $h ] then if [ $w -gt $MAXWH ] then resize="-resize ${MAXWH} 0" fi else if [ $h -gt $MAXWH ] then resize="-resize 0 ${MAXWH}" fi fi
# -q 90 指定转换质量,经试验这个值效果和压缩率都不错 cwebp $image -q 90 $resize -o ${image%.*}.webp mv $image ./bak/$image done
|