HEIC 转 JPG

iPhone 拍的是 HEIC,WhatsApp、Shopee、Word 和大多数网页表单却不认。这一页在你自己的浏览器分页里把它转过来——不上传任何东西,解码器也只在你按下按钮时才抓取。

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

    常见问题

    我的照片会被上传到伺服器吗?

    不会。下载的是解码器,不是照片:照片从你的选档器读进这个分页,由你自己的处理器解码。你可以打开网络面板查看——700 KB 解码器到达之后,没有任何请求带着照片资料,把网络关掉转换照样能跑。

    为什么按下转换才下载 700 KB?

    因为 HEIC 解码器没办法用几百行手写出来:HEVC 是视频编码,参考实作是 1.4 MB 的 WebAssembly。把它放进每一页,会让所有来用 CSV 工具的人一起变慢,所以只在这里、只在需要时抓取,之后缓存。

    画质、拍摄日期和地点会不见吗?

    图像会按你选的画质重新编码,细节会少一点——90% 的 JPEG 在正常尺寸下看不出差别。EXIF(相机、日期、GPS)不会带进 JPG:解码器交回的是画素,不是中介资料。要上传到电商平台时,这通常正好是你要的。

    如果我的档案是 AVIF,或是十张连拍?

    AVIF 会按名字被拒绝——同样的容器,里面是 AV1 图像,这个解码器版本读不了。连拍则相反:档案里每一张图像各自成为一行,十张就是十行,ZIP 里也是十个档案,不会只剩一张。