总结
目前我正在重新整理我的笔记和博客,其中涉及的任务之一是将所有现有图像(JPEG 和 PNG)批量转换为 WebP。
为了做到这一点,需要将 find、xargs 和 cwebp 串联在一起使用。
为了节省您一些时间,以下是我使用的命令:
|  |  | 
简单来说,这几条命令就是将当前目录下的所有图片文件递归地转换为 webp。
以 find * 开始,将结果通过管道传输到 xargs *,在调用 cwebp 进行转换。
如果您感兴趣,请往下看看命令是如何组成的。
寻找 find
|  |  | 
. 表示在当前目录中开始搜索
-iname 表示只搜索特定格式的图片
-print0 表示用空字符终止每个文件名,方便后续使用
|  |  | 
上面命令返回了以 .jpg 或 .jpeg 结尾的文件,为此使用了两个 -iname 选项,在多选项中,记得添加 -o,这里是代表 or 的意思。
xargs 命令
xargs 是一个强大的命令行工具,它可以从标准输入(stdin)读取数据,并将这些数据转换为特定命令的参数列表。
这是完整的 xargs 命令:
|  |  | 
需要理解上面这一条语句,首先先看看这个例子:
|  |  | 
-0 表示输入以空字符结束(这与 find 的 -print0 选项一起使用)
-n 1 -P 0 告诉 xargs 尽可能多的使用进程
-I '{}' 此选项命名输入,启用后就可以执行后面的操作
echo '{}' 这是 xargs 为每个提供的输入运行的命令
cwebp
JPEG 转 WebP
|  |  | 
使用这个命令将 Jpeg 转换为 WebPs
-short 打印简短的摘要(可以使用静默模式 -quiet 代替)
-q 指定质量,100 为最高
'{}' 这是 find 提供的输入
-o '{}'.webp 输出文件名
PNG 转 WebP
|  |  | 
这与上面的 cwebp 命令几乎完全相同。除了:
-alpha_q 100 将 Alpha 透明度通道设置为 100
-m 6 将图片压缩增加到 6(默认为 4)