iOS:将PNG转换为HEIF / HEIC + Alpha,而不会降低质量

问题描述

对于我当前正在从事的项目,我正在尝试将一堆PNG图像转换为HEIF / HEIC。这些图像将在Xcode的.xcassets中使用,然后将其“编译”为.car文件

编译PNG(共约150个文件)会产生约40 MB的Assets.car,这就是为什么我首先尝试将其转换为HEIF / HEIC的原因。我尝试了各种解决方案,例如ImageMagick,GIMP中的“导出为”,biodranik/HEIFlibheif的{​​{1}},在Photoshop中将PNG导出为8位或16位然后再做一遍。但是,一切都会导致heif-enc文件在iOS上“损坏”。第一张图片显示的是我到目前为止获得的最佳输出,但是边缘仍然有条纹。右侧的白色圆角矩形是iOS的Face ID挂锁。

enter image description here

第二张图片是(我认为)使用.heic转换为HEIC的16位PNG,并通过Homebrew进行了升级。预设的无损质量10位输出libheif@1.8.0抱怨色彩空间从RGB转换为ycbcr,并指出heif-enc

Extreme example

有什么方法可以将PNG文件正确转换为HEIF / HEIC,而不会造成质量损失?请不要建议在线服务来转换文件,因为我想完全控制我的文件

解决方法

注意:要获得无损编码,您需要这组选项。尝试:-

  -L                       switch encoder to lossless mode
  -p chroma=444            switch off color subsampling
  --matrix_coefficients=0  encode in RGB color-space