图片格式转换器

选择照片后,直接在浏览器中转换为JPEG、WebP、PNG格式,同时减小体积。图片不会被发送到服务器。

这个工具能做什么

选一张照片,缩小宽度,再另存为JPEG、WebP或PNG。常见用途是把几兆的照片压到几百KB用于博客或网店,或者让图片符合邮件、聊天软件的附件大小限制。 内部的做法是:浏览器先把所选文件解码成图片,按你指定的尺寸重新绘制到HTML画布上,再用canvas.toBlob重新编码。不使用任何外部库,只依赖浏览器自带的功能。

在哪里处理(是否上传到服务器)

本页面的代码里没有把文件发送到网络的部分。所选文件通过URL.createObjectURL生成的临时地址由浏览器读取,结果也只是浏览器内存中的Blob,再关联到下载链接。因此照片内容不会上传到服务器。 不过页面本身是普通网页,访问记录、广告脚本等全站通用的内容会和其他页面一样运行,这与图片处理是两回事。

尺寸和质量如何决定文件体积

文件体积大致与像素数成正比,再叠加各格式的压缩方式和质量参数的影响。宽度缩小一半,高度也按同一比例缩小,像素数就变成原来的四分之一。所以缩小尺寸的效果远比调质量滑块明显。 本工具只会缩小比限定宽度大的图片,不会把小图强行放大。高度按宽度的缩小比例换算并四舍五入,因此宽高比保持不变。

下表以4:3的照片为例,列出各分辨率的像素数,以及解码后(每像素4字节)浏览器占用内存的大致大小。它反映的是处理时的内存负担,而不是文件体积。

分辨率像素数解码内存相对1200万像素
480 × 360172,800675 KB1.4%
768 × 576442,3681.69 MB3.7%
1080 × 810874,8003.34 MB7.3%
1600 × 12001,920,0007.32 MB16.0%
4000 × 3000 (1200万像素)12,000,00045.78 MB100.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该选哪个

需要了解的局限,以及转换时会发生什么

不同场景的建议设置

放在网页里的照片,可以先从宽度1080~1600px、WebP或JPEG质量75~85%开始,再用肉眼确认。文字很多的截图用JPEG容易在字周围发糊,选PNG或质量90%以上的WebP更合适。 用于聊天软件发送,1080px左右通常就够了;如果是为了打印,就不要缩小,直接用原图。不要只看压缩率,最好放大预览,确认文字、人脸等细节在可接受范围内再下载。

常见问题

上传的照片会被保存吗?

不会。图片只在浏览器内存中处理,不会上传或保存。关闭或刷新标签页后,结果也会消失。

可以一次转换多张图片吗?

目前每次只支持一张。保持设置不变,换一个文件即可用相同条件重复转换。

如果画质损失太严重怎么办?

把质量滑块提高到80~90%,或把最大宽度设置得更大。也可以保持原始尺寸,只降低质量。仍然不满意可以试试PNG,但体积可能增大。

结果比原图还大,为什么?

当原图本身已经压缩得很高效,或者选了PNG时很常见。可以换成JPEG或WebP并降低质量,或缩小宽度。如果仍然更大,直接使用原图就好。

照片里的位置信息会被删除吗?

由于是在画布上重新绘制再保存,包括GPS在内的EXIF不会写入输出文件。但这只是附带效果,并非专门功能,重要的照片建议自己查看保存后文件的属性来确认。

为什么PNG的质量滑块不起作用?

PNG是无损格式,没有质量参数。想减小体积,请缩小宽度,或改选JPEG、WebP。

相关工具