All Tools / Blog / 如何在图片格式之间转换(PNG、JPG、WebP、AVIF)

如何在图片格式之间转换(PNG、JPG、WebP、AVIF)

2 min read

选错格式会浪费带宽或损失质量。WebP 80 KB 能完成的工作,PNG 却占了 400 KB。用 JPG 代替 PNG 导致透明度丢失。以下是格式转换方法,以及什么时候该选哪种格式。

在浏览器中

将图片拖入图片格式转换器,选择目标格式和质量,然后下载。所有处理在客户端完成——文件不会离开你的设备。支持的转换:PNG ↔ JPG、PNG ↔ WebP、JPG ↔ WebP、BMP → JPG/PNG、任意格式 → AVIF。

各格式的适用场景

格式 最适合 透明度 有损 相对 JPG 的大小
JPG 照片、渐变 基准
PNG 截图、Logo、UI 更大
WebP Web 图片(所有类型) 两者均可 小约 30%
AVIF 现代 Web、高压缩 两者均可 小约 50%
BMP Windows 传统格式、原始像素 大得多

WebP 是新 Web 项目的安全默认选择——自 2020 年起获得广泛浏览器支持,压缩比优于 JPG,且完全支持透明度。AVIF 更进一步,但需要 Safari 16+ 和 Chrome 85+。

Python:Pillow

from PIL import Image

# PNG 转 JPG(必须先去掉 alpha 通道)
with Image.open('image.png') as img:
    img.convert('RGB').save('image.jpg', quality=85)

# JPG 转 WebP
with Image.open('image.jpg') as img:
    img.save('image.webp', quality=80)

# WebP 转 PNG
with Image.open('image.webp') as img:
    img.save('image.png')

PNG 有 alpha 通道;JPG 没有。.convert('RGB') 将透明度平铺为白色再保存为 JPG。不加这一步,Pillow 会报错。

# 批量将文件夹中的 JPG 转换为 WebP
from pathlib import Path
from PIL import Image

for f in Path('images/').glob('*.jpg'):
    with Image.open(f) as img:
        out = f.with_suffix('.webp')
        img.save(out, quality=80)
    print(f'{f.name} → {out.name}')

ImageMagick

# 单个转换
convert image.png image.jpg
convert image.jpg -quality 85 image.webp
convert image.png -quality 80 image.avif

# PNG 转 JPG——将透明度平铺到白色背景
convert image.png -background white -flatten image.jpg

# 批量将所有 PNG 转换为 WebP
mogrify -format webp -quality 80 *.png

# 查看任意文件的格式和尺寸
identify image.webp

质量设置

质量 文件大小 肉眼差异
95
85 绝大多数图片无差异
75 硬边缘处略有压缩痕迹
60 很小 明显压缩

JPG 和 WebP 的正确默认值是 85。缩略图可以降到 75。产品图或作品集图保持 85 以上。

透明度与格式兼容性

三种会破坏结果的场景:

JPG 去掉透明度。 将带透明背景的 PNG Logo 转为 JPG,透明区域变成白色(或黑色)。需要透明背景时,使用 WebP 或 PNG。

BMP 未压缩。 1920×1080 的 BMP 约 6 MB。转为 PNG 无损约 1 MB,转为照片 JPG 约 300 KB。

AVIF 编码慢。 AVIF 文件最小,但编码时间明显长于 WebP 或 JPG。适合离线构建管道,不适合实时处理。

要点总结

  • 新 Web 项目用 WebP——比 JPG 小约 30%,支持透明度,2020 年起浏览器全面支持。
  • Pillow 中 PNG 转 JPG 前务必加 .convert('RGB'),干净去除 alpha 通道。
  • mogrify(ImageMagick)一条命令批量转换整个文件夹。
  • JPG 和 WebP 的正确默认质量是 85;仅缩略图才降低。
  • AVIF 压缩比最好但编码慢——用于离线管道,不用于实时处理。