HEIC 转 WebP

网页要的就是 WebP:档案跟 HEIC 差不多大,但每个现行浏览器都画得出来。这里预设 82%——1200 万画素的照片在这个设定下放大看依然干净。

🔒 100% 浏览器内运行 · 零服务器上传

第一次转换会下载 700 KB 的 HEIC 解码器(libheif,LGPL-3.0)。只有你按下按钮时才会抓取,之后浏览器会缓存。

结果

    这里刻意不放示范档:放一个 HEIC 示范,等于把别人的照片放进页面。请用你自己的照片——它在这个分页内解码,不会送到任何地方。

    解码在这个浏览器分页内完成。你的照片不会被上传。

    解码使用 libheif 1.23.5,未经修改,LGPL-3.0 授权。源码:github.com/catdad-experiments/libheif-js。

    马来西亚规则与特殊情况

    为什么 HEIC 需要单独一页

    这里其他工具都只是几十 KB 的 JavaScript。HEIC 解码器不是:这个格式里面包的是 HEVC 视频帧,除非档案是 Safari 做的,浏览器一律打不开。所以这一页带上全站其他地方刻意避开的东西——700 KB 的 WebAssembly 解码器——并且老实说明代价:

    项目这一页的做法
    解码器下载700 KB(gzip),第一次转换时才下载,之后由浏览器缓存。它不属于页面载入的一部分。
    解码在哪里跑在这个分页、在你的处理器上。照片、档名、任何一个字节都不会离开装置。
    函数库libheif 1.23.5,未经修改,LGPL-3.0——源码在 github.com/catdad-experiments/libheif-js。不需要重新链结:函数库按发布原样使用,本说明即是源码提供。
    HEVC 专利解码由函数库内的编解码器授权;本站不附编码器,因此从不产生 HEVC 内容。
    接受的输入heic、heix、hevc 以及通用的 mif1/msf1 品牌。AVIF 容器相同,但需要这个版本没有的 AV1 解码器——它会按名字被拒绝,而不是直接崩掉。
    尺寸上限2000 万画素。4800 万画素的「HEIF Max」照片需要约 390 MB 的像素缓冲,一个分页撑不住,会在解码途中被杀掉;那一行会直接说明。
    一个档案多张图HEIC 连拍或 Live Photo 静帧里有多张图像。每一张各自成为一行、各自一个档案——不会静静丢掉。

    它不做的事。它不会写回 HEIC:HEVC 编码是有专利授权的产品,没有浏览器能做。它不读 iCloud 连结或 zip 里的 HEIC,也不放大——1200 万画素进去,1200 万画素出来。

    处理前后

    处理前

    IMG_4821.HEIC · 2.4 MB · 4032×3024 · iPhone 15 拍的 HEVC · Shopee 上传表单不收、Outlook 不收、Word 里看不到

    处理后

    IMG_4821.jpg · 0.9 MB · 4032×3024 · 同一张照片,每个表单、聊天软件和印刷店都打得开

    使用方法

    1. 把 HEIC 照片拖进来(或按「选择照片」),第一次转换会抓取 700 KB 的解码器。
    2. 表单和聊天选 JPEG,要无损选 PNG,给网站用选 WebP;每一行都会显示真实字节数。
    3. 下载单张,或把全部打包成一个 ZIP,上传前先看一下带正负号的百分比。

    常见问题

    WebP 会比原来的 HEIC 更小吗?

    通常不会——而那一行会告诉你,因为百分比带正负号。HEIC 本身已经是视频编码;82% 的 WebP 常常只差几个百分点,有时还略大。它的价值不在体积,而在于浏览器肯画:Chrome、Safari、Firefox、Edge 都支持 WebP,而旧的 WordPress 外挂到今天还拒收 HEIC。

    我的店该用 JPG 还是 WebP?

    自己控制的页面用 WebP;要上传到别人表单的地方用 JPG:电商平台、电邮附件、政府入口网站、印刷店,它们收的还是 JPEG。所以这一站两个都做,而不是给一个「最佳格式」按钮。

    WebP 会保留透明吗?

    会——WebP 有 alpha 通道,所以 HEIC 贴图在这里保持透明,不像 JPEG 那页要你先选底色。若源档有 alpha,那一行会写明。