这个工具能做什么
选一张照片,缩小宽度,再另存为JPEG、WebP或PNG。常见用途是把几兆的照片压到几百KB用于博客或网店,或者让图片符合邮件、聊天软件的附件大小限制。 内部的做法是:浏览器先把所选文件解码成图片,按你指定的尺寸重新绘制到HTML画布上,再用canvas.toBlob重新编码。不使用任何外部库,只依赖浏览器自带的功能。
在哪里处理(是否上传到服务器)
本页面的代码里没有把文件发送到网络的部分。所选文件通过URL.createObjectURL生成的临时地址由浏览器读取,结果也只是浏览器内存中的Blob,再关联到下载链接。因此照片内容不会上传到服务器。 不过页面本身是普通网页,访问记录、广告脚本等全站通用的内容会和其他页面一样运行,这与图片处理是两回事。
尺寸和质量如何决定文件体积
文件体积大致与像素数成正比,再叠加各格式的压缩方式和质量参数的影响。宽度缩小一半,高度也按同一比例缩小,像素数就变成原来的四分之一。所以缩小尺寸的效果远比调质量滑块明显。 本工具只会缩小比限定宽度大的图片,不会把小图强行放大。高度按宽度的缩小比例换算并四舍五入,因此宽高比保持不变。
下表以4:3的照片为例,列出各分辨率的像素数,以及解码后(每像素4字节)浏览器占用内存的大致大小。它反映的是处理时的内存负担,而不是文件体积。
| 分辨率 | 像素数 | 解码内存 | 相对1200万像素 |
|---|---|---|---|
| 480 × 360 | 172,800 | 675 KB | 1.4% |
| 768 × 576 | 442,368 | 1.69 MB | 3.7% |
| 1080 × 810 | 874,800 | 3.34 MB | 7.3% |
| 1600 × 1200 | 1,920,000 | 7.32 MB | 16.0% |
| 4000 × 3000 (1200万像素) | 12,000,000 | 45.78 MB | 100.0% |
把4000 × 3000的照片缩到1080px宽,得到1080 × 810,像素数约为原来的7.3%。把1920 × 1080的屏幕截图限制在1600px,则是1600 × 900。 如果原图3.20MB、转换结果420KB,本工具显示的压缩率就是1 − 420KB ÷ 3.20MB四舍五入后的87%。(界面上的KB、MB按1024进制计算。)
JPEG、WebP、PNG该选哪个
- JPEG:有损压缩。拍摄的照片用它比较稳妥,几乎所有设备和服务都能打开,但无法保存透明度。
- WebP:同时支持有损、无损和透明,在相近观感下往往比JPEG更小。但一些旧软件或上传表单可能不接受WebP。
- PNG:无损压缩,画质不变,但照片的体积会大幅增加。适合标志、截图和透明背景图片。在本工具中选择PNG时,质量参数不起作用,只有缩小宽度才能减小体积。
需要了解的局限,以及转换时会发生什么
- 重新编码会损失画质:JPEG和WebP是有损格式,每保存一次都会丢失一点信息。把已压缩的JPEG以较低质量再存一次,可能出现明显的块状噪点。请另外保留原图。
- 体积可能反而变大:把已经高度压缩的小JPEG转成PNG,或选择很高的质量,结果可能比原图还大。此时压缩率显示为0%,结果下方会给出提示。
- 透明背景:把透明PNG转成JPEG时,透明部分会填成白色(会先铺一层白底再绘制)。想保留透明,请选WebP或PNG。
- 元数据会被去掉:由于是重新绘制到画布再保存,拍摄时间、相机型号、GPS位置等EXIF信息不会写入结果文件。担心位置信息泄露时,这算是附带的好处;但如果需要保留版权等元数据,就不适合。照片的方向(旋转)信息,目前大多数浏览器在绘制时会应用,较旧的浏览器可能会以横躺的状态保存。
- 色彩配置文件:原图的广色域(如Display P3)信息不一定会保留在结果中,颜色可能略有变化。
- 动图和矢量图:动态GIF/WebP只会保存为一张静态图,SVG会变成位图。
- 打不开的格式:浏览器无法解码的文件(某些环境下的HEIC、RAW等)会加载失败并显示提示。这时请先导出为JPEG,或使用其他工具。
- 文件大小上限:本页面没有自行设定文件大小上限。实际的限制来自设备内存和浏览器的画布最大尺寸,不同浏览器和设备各不相同(手机上通常更低)。遇到特别大的图片没有结果时,请选择更小的宽度。
- 不能保存为WebP的浏览器:有些浏览器无法保存为WebP,会改用其他格式输出。这时结果下方会标明实际保存的格式,扩展名也会相应调整。
不同场景的建议设置
放在网页里的照片,可以先从宽度1080~1600px、WebP或JPEG质量75~85%开始,再用肉眼确认。文字很多的截图用JPEG容易在字周围发糊,选PNG或质量90%以上的WebP更合适。 用于聊天软件发送,1080px左右通常就够了;如果是为了打印,就不要缩小,直接用原图。不要只看压缩率,最好放大预览,确认文字、人脸等细节在可接受范围内再下载。
常见问题
上传的照片会被保存吗?
不会。图片只在浏览器内存中处理,不会上传或保存。关闭或刷新标签页后,结果也会消失。
可以一次转换多张图片吗?
目前每次只支持一张。保持设置不变,换一个文件即可用相同条件重复转换。
如果画质损失太严重怎么办?
把质量滑块提高到80~90%,或把最大宽度设置得更大。也可以保持原始尺寸,只降低质量。仍然不满意可以试试PNG,但体积可能增大。
结果比原图还大,为什么?
当原图本身已经压缩得很高效,或者选了PNG时很常见。可以换成JPEG或WebP并降低质量,或缩小宽度。如果仍然更大,直接使用原图就好。
照片里的位置信息会被删除吗?
由于是在画布上重新绘制再保存,包括GPS在内的EXIF不会写入输出文件。但这只是附带效果,并非专门功能,重要的照片建议自己查看保存后文件的属性来确认。
为什么PNG的质量滑块不起作用?
PNG是无损格式,没有质量参数。想减小体积,请缩小宽度,或改选JPEG、WebP。