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 · 同一张照片,每个表单、聊天软件和印刷店都打得开 使用方法
- 把 HEIC 照片拖进来(或按「选择照片」),第一次转换会抓取 700 KB 的解码器。
- 表单和聊天选 JPEG,要无损选 PNG,给网站用选 WebP;每一行都会显示真实字节数。
- 下载单张,或把全部打包成一个 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。