这个页面的代码没跑起来。

直接从文件夹里打开 index.html,浏览器会拦下 JavaScript 模块,于是你选好照片之后,页面不会有任何反应。改用 http 把这个文件夹提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然后打开 http://localhost:8080/。

HEIC 转 JPG 转换 iPhone 照片

iPhone 拍的照片,换成什么都打得开的格式。

语言: 简体中文
查看源码
你的照片在浏览器里处理,无须上传处理。

解码这一步,在你自己的浏览器里、用你自己的硬件完成。HEIC 是浏览器唯一打不开的图片格式,所以这个页面把解码器一并带上了,大约 1.4 MB,从本站发出,第一次访问之后就有缓存。别的 HEIC 转换器为什么个个要你上传?因为它们把编解码器放在服务器上,照片只能送过去。这个页面把编解码器放在了这边。页面上根本没有联网功能,另一头也没有服务器能接住照片。

实时检查: 检查中…

离线: 检查中…

别信我们嘴上说的。打开开发者工具,盯着“网络”面板,转一张照片试试。你会看到页面自己的文件在加载,解码器也在里头,但没有一条请求带着照片、缩略图、文件名,或者你选中内容里的任何一个字节。嫌麻烦就把页面开一次,拔掉网线,照样能把一整个文件夹转完。

1 选好你的 HEIC 和 AVIF 照片

手机里直接拷的、备份里翻出来的、存储卡上拿的,都行。文件就在这台机器上读,画面也在这里解码。这个页面没有上传这一步,背后也没有服务器。

opens the file picker natively. Calling .click() on a display:none input is refused by Safari and by some Chrome configurations, so the input stays in the layout: visually hidden, still focusable, and reachable by keyboard. There is no JavaScript in that path at all. --> 将 HEIC 和 AVIF 图片拖到这里 或点击选择:.heic, .heif, .avif,根据文件内容识别格式 AVIF 使用浏览器解码器,不加载 HEIC 引擎。输出仍为 JPEG、PNG 或 WebP。只输出第一张解码后的图片,颜色或 HDR 可能改变。AVIF 元数据一律不保留,元数据复选框仅适用于 HEIC。原文件保持不变。

2 想要什么样的结果

保留日期、相机和参数 按手机写的样子原样复制过去,所以转换后的照片还是按拍摄那天排序,不是按转换那天。照片带 GPS 坐标的话,坐标也一起带上,上面那份列表写明了你的哪几张带着。关掉它,出来的 JPEG 里只剩画面。

选哪边都一样,这里没有任何东西会被读给谁听。这个选择管的是你拿回去的文件里装什么,不是这个页面拿它做什么。想逐条细看那些标签,或者把已经是 JPEG 的照片里的标签清掉,那是 EXIF 查看与清除干的活。

格式
92

照片里的那些信息

3 转换

以 Markdown 查看

HEIC 照片怎么转成 JPG

  1. 选好你的 HEIC 和 AVIF 照片。拖到下面的方框里,或者点开自己挑,直接从手机备份、桌面文件夹里选都行。浏览器直接从你的硬盘上读,这期间没有东西发出去。列表会写明每一张是什么,里面有些什么。
  2. 看看这些照片都带着什么。每一行写出拍摄日期、相机型号,还有这个文件里有没有 GPS 坐标,最后这项用绿色标出来,因为它才是值得留神的。这些不用解码画面,直接从容器里读,所以不花什么代价,也立刻就有。
  3. 选格式,再定那些细节。没有特别理由就选 JPEG。转换图的本来就是到哪儿都打得开。质量滑块停在 92,这一档上照片很难跟原图区分开。那个勾选框决定日期、相机和位置要不要一起带过去。
  4. 按“转换”,然后下载。解码器在第一次转换时到位,大约 1.4 MB,只这一次。之后每张照片都在你自己的机器上解码、写出。一个文件给你一个下载按钮,多个文件另外给你一个 zip。

说得更细的版本

手机存下的那张照片,和那个什么都打不开的格式 iPhone 把照片存成 HEIC,而半个互联网打不开它。这个格式是什么,为什么只有 Safari 解得了,转换要拿画质换多少,以及怎么做到不把照片交给任何人。

常见问题

我的照片会传到什么地方去吗?

不会。读取、解码、写出,全由你自己的浏览器在你自己的硬件上完成。这个工具没有任何联网功能,不取东西,也不发东西。页面的 Content-Security-Policy 把它可能联的地址全列了出来,没有一个是本站的。确实会加载的只有解码器,它来自本站,只加载一次,而且发生在你的照片被牵扯进来之前。

为什么第一次打开要下载 1.4 MB?

因为 HEIC 是浏览器唯一打不开的图片格式。它是装在盒式容器里的一帧 HEVC,只有苹果设备上的 Safari 有解码器,Chrome、Firefox 和 Edge 干脆不认这个文件。所以 HEIC 转换器总得从某处弄个解码器来,能放的地方只有两个,服务器或者这个页面。别人都选了服务器,这就是它们个个要你上传照片的原因。这一个改成自带一份编译成 WebAssembly 的 libheif。它从本站发出,第一次访问之后就有缓存。你的照片哪儿也不去,代价就是这 1.4 MB,仅此而已。

转出来的 JPEG 还保留拍摄日期、相机和位置吗?

你要它留就留,页面上有个勾选框。开着的时候,EXIF 块从 HEIC 里原样复制出来,按手机写的样子写进 JPEG,所以转换后的照片仍然按拍摄那天排序,而不是按转换那天。大家抱怨 HEIC 转换器的,正是这一点。只有一个标签会改,就是方向。它被设成“正立”,因为旋转已经作用在像素上了,看图软件要是再转一次,每一张竖构图都得躺下。把勾选框关掉,出来的 JPEG 里只剩画面。

它会去掉 GPS 坐标吗?

它先告诉你坐标在那儿,然后照你说的办。还没开始转,每张照片那一行就已经写明文件里有没有坐标,这一步比手机做得多。取消勾选“保留日期、相机和参数”,坐标跟别的一切一起被挡在 JPEG 之外;勾着,它们就跟过去。想逐条细看那些标签,或者把已经是 JPEG 的照片里的标签清掉,那是 EXIF 查看与清除干的活,而且它不重新压缩画面。

画面会重新压缩吗?

会,而且非压不可。HEIC 和 JPEG 是两种编码,从一种到另一种,只能把画面解开再编一遍。你能拿捏的是这一下的代价有多大。质量滑块默认 92,这一档上照片非常难跟原图区分开。要是一点损失都不想要,又不介意文件大上五到十倍,菜单里还有 PNG。

文件名叫 .jpg,其实是 HEIC,怎么办?

照样能用。拖进来的文件按开头那几个字节判断,不按名字。名字取决于最后碰过它的那个应用怎么叫它,而一个名叫“.jpg”的 HEIC,正是大家跑来找这类工具的常见原因之一。真的是 JPEG 或者 PNG 的文件会被挡下来,并告诉你它其实是什么,不会被转成一份自己的副本。

Live Photo 或者连拍能转吗?

里面的静态画面能转。一个 HEIC 可以装不止一张画面,装几张就转几张,按原文件名加编号命名。Live Photo 的视频那一半,是手机搁在 HEIC 旁边的另一个文件,不在这里,也就无从转起。深度图和缩略图在容器里,但不是谁想要的画面,原样留着不动。

也能转换 AVIF 图片吗?

AVIF 使用浏览器解码器,不加载 HEIC 引擎。输出仍为 JPEG、PNG 或 WebP。只输出第一张解码后的图片,颜色或 HDR 可能改变。AVIF 元数据一律不保留,元数据复选框仅适用于 HEIC。原文件保持不变。

免费吗?要注册吗?

免费,没有账号,不用登录,没有试用期,也没有水印。文件的数量和大小同样没有上限,因为没有哪台服务器在为它们掏钱,活是在你自己的机器上干的。本站带广告,经费就是这么来的,广告拿不到关于你照片的任何信息。

断网能用吗?

能,连解码器一起。页面开一次之后断网,它照样处理你的照片,跟之前没有区别。这也是“什么都没上传”最有分量的证明。一个把 HEIC 送出去解码的转换器,拔线那一刻就停了,这一个不会。