HEIC 转 PNG

PNG 是无损选项——HEIC 里的每个画素都保留下来,照片若有 alpha 通道也一并保留。代价是档案更大,每一行都会如实显示。

🔒 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,上传前先看一下带正负号的百分比。

    常见问题

    为什么 PNG 比 HEIC 大好几倍?

    因为 HEIC 是视频编码,PNG 不是:HEVC 用预测画素的方式把一张 1200 万画素的照片压进约 2 MB,而 PNG 每个画素都独立存,只压缩重复的部分。要修图,这正是你要的——什么都没有被丢掉;但要上传到 Shopee,JPG 够用就别传 PNG。

    PNG 会保留 HEIC 贴图的透明吗?

    会,前提是那个 HEIC 本身有 alpha 通道:解码器会回报,PNG 写入时保留,那一行会写「这个 HEIC 有 alpha 通道」。JPEG 做不到——所以 JPEG 那一页要你选底色,这一页不用。

    结果相对原档真的是无损吗?

    是相对「解码器的输出」无损,不是相对相机感测器:HEIC 早已被手机压缩过,PNG 保住的只是那个档案里已有的内容,不会把细节无中生有。真要感测器原档,请从「照片」导出 DNG 或 ProRAW。