如何在Swift中导出16位HEIF图像?

如何在Swift中导出16位HEIF图像?,swift,core-image,bit-depth,heif,Swift,Core Image,Bit Depth,Heif,我正在尝试为我的应用程序编写一个导出函数,允许16位深度的HEIF文件。苹果的文档没有说明是否支持16位,也没有说明writeheifresentation()方法是否需要任何特定的选项。我一直在尝试每种颜色16位(每像素64位)格式和扩展显示P3或HLG颜色空间,但输出仍然是8位。源图像是一个16位TIFF 这是我的游乐场代码: 导入可可粉 导入CoreImage 让originalImageURL=URL(fileURLWithPath:“/Users/imf/Desktop/DSC0099

我正在尝试为我的应用程序编写一个导出函数,允许16位深度的HEIF文件。苹果的文档没有说明是否支持16位,也没有说明
writeheifresentation()
方法是否需要任何特定的选项。我一直在尝试每种颜色16位(每像素64位)格式和扩展显示P3或HLG颜色空间,但输出仍然是8位。源图像是一个16位TIFF

这是我的游乐场代码:

导入可可粉
导入CoreImage
让originalImageURL=URL(fileURLWithPath:“/Users/imf/Desktop/DSC00990-HDR-3.tif”)
让exporteImage URL=URL(fileURLWithPath:“/Users/imf/Desktop/DSC00990-HDR.heic”)
guard let colorSpace=CGColorSpace(名称:CGColorSpace.displayP3)else{
打印(“无法创建颜色空间:”)
出口(1)
}
let context=CIContext()
let options=[kCGImageDestinationLossyCompressionQuality作为CIImageRepresentationOption:1.0作为CGFloat]
guard let image=CIImage(contentsOf:originalImageURL)else{
打印(“无法创建图像:”)
出口(1)
}
做{
_=try context.writeHEIFRepresentation(of:image,to:exportedImageURL,格式:CIFormat.RGBA16,颜色空间:颜色空间,选项:选项)
打印(“它工作了”)
}
抓住{
打印(“它失败了”)
}
你们中有谁有在CoreImage上创建HEIF文件以供共享的经验吗?也许苹果的编码器还不支持16位HEIF文件


提前非常感谢。

您误解了文档。这不是深度图像。您使用的是8位格式,因为您的格式是ABGR8。是的,我这样做了。正如我提到的,文档不清楚。这是depthImage文档的样子。不过,您是对的。颜色空间确实是8位的。但是,使用CIFormat.RGBA16不会产生任何错误也有不同。我不太确定您想要实现什么。
.tif
文件是否已经包含深度图像?您是否仅尝试导出深度图像或将其添加到另一个图像?
CIImageRepresentation。在将图像写入HEIC文件时,depthImage
实际上用于将单独的深度图像附加到图像(因此,该文件将同时包含这两个部分)。您可能希望从去年的WWDC中查看此会话(他们谈到了
肖像效应,但它处理的是相同的):