HEIC转PNG
下一步是编辑而不是分享时,比如去除背景、叠加图层或打印,就把iPhone的HEIC照片转成无损PNG。
把文件拖到这里
.heic, .heif, .hif · 最大100 MB
如何转换为PNG
- 1
拖入HEIC照片
一次最多30张。这个上限故意比HEIC转JPG低:一张1200万像素照片的PNG有15到30 MB,队列再长,浏览器标签页就会内存不足。
- 2
选择优化级别
默认是级别2,兼顾速度和大小。级别6能为完全相同的像素找到更小的无损编码,但处理全分辨率照片要多花好几倍时间。
- 3
下载PNG
一张照片下载为单个.png文件,多张则打包为pulsarkit-heic-to-png.zip。过程中图像本身没有任何损失,变的只是文件大小。
手机照片什么时候适合转PNG,什么时候不适合
PNG是无损格式:解码器输出的像素就是写进文件的像素,逐字节一致。照片要作为别的处理的输入时,这一点很重要:抠掉背景、合成图层、进入印刷流程,或者任何每次保存都会叠加JPEG压缩痕迹的处理。照片直接用在网站或消息里时,这一点就没那么重要:质量90的JPG看起来一样,大小只有十分之一。如果你要用邮件发送结果,就改转JPG;在下方的处理链里一步就能切换。
方向、透明度和位深
HEIC文件里的旋转可以写在容器的irot属性里,也可以写在EXIF Orientation标签里;用错一个,照片就会横躺,这是HEIC转换器最常见的毛病。这里两处都读,把还没应用的那个旋转写进像素;PNG本身没有方向标签,所以这一步不能省略。如果容器带有透明通道,透明度会保留;JPG根本存不了透明度。位深开关可以为有需要的流程写出真正的16位PNG。不过要知道,浏览器里可用的HEIC解码器每个通道只输出8位,所以这里的16位文件是把这些值如实提升,而不是从原图恢复出额外的精度。
优化级别到底做了什么
它不改动任何一个像素。PNG压缩先根据相邻像素预测每个像素,再把差值打包,而做这些选择有很多种合法的方式。级别越高,花在寻找最小打包组合上的处理器时间越多。级别0完全跳过搜索,速度最快;级别2是合理的默认值;级别6通常还能再小几个百分点,耗时却是好几倍。无论选哪个,解码结果都是完全相同的图像。这种等价性由一项测试检查:它把级别6文件和级别2文件的每个像素逐一比较。
解码器及其许可证
这个页面里处理HEIC的部分是libheif 1.19.8,它是参考开源解码器,采用LGPL-3.0许可证。这个许可证要求两件事:组件必须保持可单独替换,不能和其余代码融为一体;源代码必须可以获取。因此WebAssembly模块作为独立文件从/libheif/加载,从不打包进去;许可证文本在/libheif/LICENSE;这个版本未经修改的源代码在https://github.com/catdad-experiments/libheif-js/tree/v1.19.8和https://github.com/strukturag/libheif。“HEIC转JPG”用的也是同一个模块,所以如果你从那个工具过来,它已经在缓存里,不用再下载。
照片始终不离开你的设备
HEIC解码器和PNG编码器都是在你的浏览器标签页里运行的WebAssembly模块。照片数据从磁盘读进内存,在那里转换,然后直接作为下载文件交还给你。不上传,不在服务器上排队,关闭标签页就全部清除。
常见问题
iPhone照片什么时候转PNG比JPG好?
照片还要进一步编辑的时候。PNG是无损的,去除背景、调整图层或反复保存都不会增加压缩痕迹。如果是分享或上传,JPG更合适:看起来一样,大小只有一小部分。
为什么PNG比HEIC大那么多?
因为HEIC是有损格式,会丢掉人眼几乎察觉不到的细节,而PNG什么都不能丢。一张2 MB的HEIC照片变成20 MB的PNG很常见。这是无损的代价,不是转换出了问题。
透明度会保留吗?
会,前提是HEIC文件确实带透明通道。大多数相机照片没有,但从设计工具导出的图片有时会有。有透明度就会保留到PNG里;如果你想把透明度拼合掉,关闭透明度开关即可。
16位PNG有什么用?
有些印刷和调色流程要求每个通道16位。这个工具可以写出这种文件,而且是真正的16位PNG。要注意,浏览器里的HEIC解码器每个通道输出8位,所以多出的位是这些值的精确提升,不是新的细节,文件也会大约大一倍。
拍摄日期和GPS位置会保留吗?
会。EXIF信息会重新打包进PNG的eXIf块,日期、相机和拍摄参数随文件一起保留。如果你希望结果里什么都不带,关闭这个开关。
为什么我的.heic文件有时其实是AVIF?
有些工具把AV1压缩的数据存进HEIF容器,同时保留.heic扩展名。这里从文件自身开头的字节判断格式,所以这类文件会被自动识别并按AVIF解码,不会转换失败。
一次能转换多少张照片?
最多30个文件,每个100 MB,总共500 MB。这个上限故意比HEIC转JPG低,因为PNG输出要大得多。文件逐个处理,某个文件失败只会跳过它本身。
照片会上传到服务器吗?
不会。一切都在你的浏览器标签页里用WebAssembly编解码器完成。不上传,服务器上没有副本,关闭页面后什么也不会留下。