Squoosh CLI使用教程
Squoosh 是Google开源的压缩图片工具, 基于网端, 支持多种格式, 非常好用。可惜的是不支持批量操作, 在之前的文章中, 我利用selenium实现图片自动上传下载, 实现批量操作:
利用selenium批量调用Squoosh压缩图片 | Monkey’s Hut
而在Squoosh新的版本发布后, 有了CLI版本, 可以直接在命令行中调用Squoosh压缩命令, 但是安装的过程中, 遇到点Bug, 因此记录一下, 供大家参考。Bug主要来源于node版本、Squoosh更新造成的, 可能在后期的版本中这些这些bug不会存在, 所以这篇博客的时效性较强, 仅供参考。
1 环境配置
Windows 10
node
v16.5.0
npm
7.20.2
squoosh-cli
2 安装
1 Nodejs
Node.js下载并安装, 旧版本的Nodejs 可能会导致的CommonJS语法报错, 如下:
SyntaxError: The requested module '@squoosh/lib' is expected to be of type CommonJS, which does not support named exports.
2 Squoosh
1 | # 安装 |
3 使用
测试图片, 用官方给出的参数如下, 注意:
- 如果输入文件和输出文件在同一个目录, 压缩图像会覆盖原始图像
- 不指定输出文件夹, 即不使用
-d
命令, 默认输出在命令所在目录。
1 | squoosh/cli --mozjpeg auto "C:\Users\dell\Desktop\IMG_20210729_195643.jpg" |
如果图片较小, 则顺利输出, 但输出时间很长。而且如果图片过大(示例图片4M), 会出现memory access out of bounds
报错。这都是由于参数设置不当导致的。
打开网页版Squoosh, 添加图片, squoosh自动设置参数并压缩, 点击Edit
面板上Copy npx command
按钮, 复制参数命令。
将指令开头npx @squoosh/cli
替换成squoosh/cli
, 结尾加上"文件路径"
。输入cmd命令如下:
1 | squoosh/cli --mozjpeg '{"quality":80,"baseline":false,"arithmetic":false,"progressive":true,"optimize_coding":true,"smoothing":0,"color_space":3,"quant_table":3,"trellis_multipass":false,"trellis_opt_zero":false,"trellis_opt_table":false,"trellis_loops":1,"auto_subsample":true,"chroma_subsample":2,"separate_chroma_quality":false,"chroma_quality":75}' "C:\Users\dell\Desktop\IMG_20210729_195643.jpg" |
出现Cannot use 'in' operator to search for 'quality
的报错, 这是由于Windows cmd中引号转义错误导致, 在双引号前加入\
, 并将'
更改为"
, 更改后指令如下:
1 | squoosh/cli --mozjpeg "{\"quality\":80,\"baseline\":false,\"arithmetic\":false,\"progressive\":true,\"optimize_coding\":true,\"smoothing\":0,\"color_space\":3,\"quant_table\":3,\"trellis_multipass\":false,\"trellis_opt_zero\":false,\"trellis_opt_table\":false,\"trellis_loops\":1,\"auto_subsample\":true,\"chroma_subsample\":2,\"separate_chroma_quality\":false,\"chroma_quality\":75}" "C:\Users\dell\Desktop\IMG_20210729_195643.jpg" |
或者, 用powershell
来代替cmd
可解决引号的问题:
如果powershell
出现ps1禁止运行的报错, 使用管理员运行powershell, 输入Set-ExecutionPolicy RemoteSigned
, 更改执行策略, 再执行squoosh-cli命令即可。
4 参考文献
squoosh/cli at dev · GoogleChromeLabs/squoosh
squoosh cli windows conversion stuck · Issue #1104 · GoogleChromeLabs/squoosh