教程

HEIC 转 WebP:面向 Web 开发者的现代格式

koboshiCo-founder
·2 分钟阅读
概述

WebP 能给你现代的压缩能力,又没有 HEIC 那身兼容性包袱,而且几乎所有浏览器多年前就支持它了。本指南介绍如何把 HEIC 转成面向网页的 WebP、体积对比是什么样,以及如何把它接进你的处理流程。

用户上传了一张 iPhone 拍的照片。文件是 HEIC,约 1.8 MB。你的 <img> 标签不能依赖它:HEIC 在 Chrome、Firefox 和 Edge 里都没有原生支持。所以这张图要么变成 3.4 MB 的 JPG,要么变成约 1.2 MB、肉眼无差别的 WebP。正是这个差距,让 WebP 成为 HEIC 格式照片的答案。

本指南覆盖 HEIC 转 WebP、各格式之间的体积对比,以及从浏览器工具到可以塞进构建流程的 shell 命令等一系列选项。

为什么是 WebP 而不是 HEIC

HEIC 在存储照片上很出色,同等质量下大约只有 JPEG 的一半。但作为网页分发格式,它毫无用处。Chrome、Firefox、Edge 和 Safari 多年前就都支持 WebP 了,而 HEIC 只在 Safari 和少数厂商特有场景里受支持。你不能指望 HEIC 来处理用户上传的图片,这正是转换流程存在的原因。

WebP 和 HEIC 覆盖同一片领域:它是建立在现代压缩之上的有损格式,带无损模式和 alpha 透明。对照片来说,同等视觉质量下 WebP 和 JPG 的实际差距是文件小大约 25% 到 35%。在图片密集的页面上,这是实打实的节省。

体积对比

同一张 1200 万像素照片,同等视觉质量:

格式体积浏览器支持备注
HEIC~1.8 MB仅 SafariiPhone 的源格式
JPG~3.4 MB全部基准
WebP~1.2 MB全部有损,支持 alpha
PNG~24 MB全部无损,不适合照片

如果你想了解 WebP 相对 JPG 和 PNG 处于什么位置的背景,网页图片格式指南有完整对比。

方案 1:在浏览器里转换

最简单的路径是完完全全在设备上运行的工具。HEIC 转 WebP 转换器用 WebAssembly 在本地解码 HEIC 并写出 WebP 文件,照片永远不会离开你的机器。你可以设置质量、转换整个文件夹、把结果下载成 ZIP。这适合一次性转换,也适合不习惯命令行的设计师或编辑。

方案 2:在命令行转换

对处理流程来说,经典组合是 libheiflibwebp。在 macOS 上用 Homebrew:

brew install libheif webp

然后用 heif-convertcwebp 转换:

heif-convert input.heic output.png
cwebp -q 82 output.png -o output.webp

或者用 ffmpeg 跳过中间文件:

ffmpeg -i input.heic -c:v libwebp -quality 82 output.webp

两条命令都支持质量参数,cwebp 的控制项最全,包括无损模式和用 -m 6 追求最慢、最小的输出。处理文件夹就写个循环:

for f in *.heic; do heif-convert "$f" "${f%.heic}.png"; cwebp -q 82 "${f%.heic}.png" -o "${f%.heic}.webp"; done

这足以接进一个 shell 脚本或 CI 任务,在服务端处理上传。

在 WebP 里选择质量和格式

有两个决定对输出的影响超过其他一切:

  • 有损 vs 无损。 cwebp -lossless 或带无损标志的 -q 100 保留每一个像素,但文件更大。用于截图、logo,以及任何带纯色和文字的内容。照片用有损。
  • 质量数值。 -q 82 是照片的合理默认值:肉眼干净,比 JPG 小得多。追求高质量时,-q 90 花费更多字节,但更接近源文件。这和 JPG 质量设置的取舍一样,HEIC 转 JPG 不损失画质有详细说明。

WebP 也能处理 alpha,所以带透明通道的 HEIC 图像能顺利走完这一程,而 JPG 会把它丢掉。

关于更新格式的一点说明

AVIF 是 AV1 基础上的继任者,体积上通常胜过 WebP,现在所有主流浏览器都支持它。如果你在搭一套全新的流程,并且可以自选解码器,那么针对你的具体图片,AVIF 值得和 WebP 放在一起测一测。代价是编码器速度和工具成熟度,这也是 WebP 至今仍是大多数团队安全默认值的原因。网页图片格式指南对各格式的定位有更多说明。

结论

凡是最终要放到网站上的东西,都从 HEIC 转成 WebP。它到处受支持,同等质量下比 JPG 方案更小,用浏览器工具或两条命令的 shell 流程就能转换。把原始 HEIC 当作真相来源,在上传时或批量任务里转换,让格式替你算加载时间的账。

更多推荐阅读