如何使用 Squoosh 命令行批量压缩图片

先说明:windows 上无法批量压缩,原因:

https://github.com/GoogleChromeLabs/squoosh/issues/973

因为 squoosh-cli 暂不支持 windows 上的通配符。这么一个小问题,给我整崩溃了。

完整过程如下

先在 (https://squoosh.app) 上测试一下图片压缩的设置:

image-20220922011515991

一切就绪后,点击右侧菜单 Edit 右边的控制台小图标,将命令复制下来,应该类似于这样:

npx @squoosh/cli --resize '{"enabled":true,"width":970,"height":970,"method":"lanczos3","fitMethod":"stretch","premultiply":true,"linearRGB":true}' --mozjpeg '{"quality":75,"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}'

如果想要先安装再使用,可以先用以下命令:

npm i -g @squoosh/cli

然后就可以用 squoosh-cli 命令了,将上面的命令改写一下:

squoosh-cli --resize '{"enabled":true,"width":970,"height":970,"method":"lanczos3","fitMethod":"stretch","premultiply":true,"linearRGB":true}' --mozjpeg '{"quality":75,"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}'

还有需要改动的地方就是:目标文件夹,目标文件,长宽

squoosh-cli --resize '{"enabled":true,"width":970,"height":970,"method":"lanczos3","fitMethod":"stretch","premultiply":true,"linearRGB":true}' --mozjpeg '{"quality":75,"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}' -d "[destinationfolder]" "*.png"

-d 参数后写上输出的文件夹,后面再跟需要压缩的图片,可以使用通配符(windows不行!),然后前面 --resize 的参数里长宽可以只保留一个参数,就不会压缩图片长宽比了:

squoosh-cli --resize '{"enabled":true,"width":500,"method":"lanczos3","fitMethod":"stretch","premultiply":true,"linearRGB":true}' --mozjpeg '{"quality":75,"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}' -d "[destinationfolder]" "*.png"

然后就可以舒适地观看转换过程:

image-20220922012116526

<think>好的,用户想学习如何减小图片文件的体积,询问图片压缩方法,涉及IT图像处理、减小文件大小和技术实现。我需要提供一个结构清晰的中文回答,并生成相关问题。首先,得明确图片压缩的主要方法,分为有损和无损压缩,然后具体说明每种方法的技术实现和适用场景。 首先,有损压缩,常见的是调整分辨率和降低质量。比如JPEG压缩,可以通过调整压缩率来减小文件大小。另外,转换格式也很重要,比如WebP格式比JPEG更高效。然后是工具推荐,如Photoshop、在线工具TinyPNG,以及命令行工具ImageMagick。接着是无损压缩,如PNG优化,使用工具如OptiPNG。还有删除元数据,使用exiftool清除EXIF信息。 需要确保所有数学公式用$...$,比如计算压缩率时可能需要公式。独立公式用$$...$$,但这里可能用不上。然后生成相关问题,比如如何选择压缩方法,批量处理工具,压缩对画质的影响,移动端优化方法,WebP兼容性问题等。 注意引用标识,比如在提到JPEG压缩标准时添加[^1]。检查LaTeX语法是否正确,虽然这个问题可能涉及较少数学公式,但如果有的话要正确使用。最后确保回答结构清晰,分步骤说明方法,推荐工具,并自然引用相关知识点。</think># 图片压缩方法与技术实现 ## 一、核心压缩原理 1. **有损压缩**:通过剔除人眼不敏感的高频细节实现压缩,例如$JPEG$算法采用离散余弦变换(DCT)将图像从空间域转换到频域[^1] 2. **无损压缩**:利用重复数据模式进行编码优化,典型算法包括$LZW$(用于$GIF$)和$DEFLATE$(用于$PNG$) $$ \text{压缩率} = \frac{\text{原始文件大小}}{\text{压缩后文件大小}} \times 100\% $$ ## 二、实践操作步骤 ### (一)有损压缩方案 1. **分辨率调整**: - 使用ImageMagick命令行工具: ```bash convert input.jpg -resize 50% output.jpg ``` - 推荐尺寸标准:网页图片宽度建议≤1920px,移动端≤750px 2. **质量参数优化**: - Photoshop导出时设置品质60-80 - FFmpeg压缩示例: ```bash ffmpeg -i input.png -q:v 80 output.jpg ``` 3. **格式转换策略**: | 格式 | 压缩率 | 透明度支持 | 动画支持 | |---------|--------|------------|----------| | WebP | 高 | ✔️ | ✔️ | | AVIF | 极高 | ✔️ | ❌ | | JPEG XL | 高 | ✔️ | ❌ | ### (二)无损优化方案 1. **元数据处理**: ```bash exiftool -all= input.jpg ``` 2. **PNG优化流程**: - 使用pngquant进行色深优化: ```bash pngquant --speed 1 --quality=65-80 input.png ``` - 使用zopflipng进行压缩优化: ```bash zopflipng -y input.png output.png ``` ## 三、开发级优化 1. **响应式图片技术**: ```html <img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" sizes="(max-width: 600px) 100vw, 50vw"> ``` 2. **CDN动态压缩**: - 阿里云OSS支持通过URL参数进行实时处理: ``` https://bucket.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_800/quality,Q_75 ``` ## 四、专业工具推荐 1. 桌面软件:Squoosh(谷歌开源)、RIOT 2. 在线服务:TinyPNG API(支持批量处理) 3. 开发库:Sharp(Node.js)、Pillow(Python)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值