OpenEXR是否支持iOS/macOS?

5

我想了解在iOS和macOS上是否支持读取OpenEXR文件。

以下是我所了解到的信息:

  1. The docs barely mention OpenEXR, and where they do they say that it's only supported on recent macOS.
  2. Yet, the official WWDC 2017 samples for ARKit simply load .exr images with:

    UIImage(named: "image.exr")
    
这是在以下官方示例中发现的:
  • 处理增强现实中的3D交互和UI控件
  • 使用ARKit创建交互式内容
  • ARKit中的音频
iOS和macOS上的OpenEXR支持如何?

你现在对此有更多的了解吗?我也需要在我的应用程序中支持OpenEXR,但不知道从哪里开始... - Michel Storms
1个回答

0

多年来,苹果一直通过ImageIO / CGImageSource和像UIImage这样的API提供对OpenEXR的支持。2-3年前,还添加了低级别访问形式的libAppleEXR.dylib #include <AppleEXR.h>,如果您需要处理元数据或处理与RGBA / XYZ / YCbCr不匹配的通道格式,则可能更可取。苹果在Ventura方面对ImageIO进行了相当大的改进,因此您必须决定这是否完全符合要求。由于Ventura仍然很新,因此很可能无法在各处安装。对于立方体贴图、mipmaps、ripmaps和其他更GPU-ish的格式,您肯定会想使用libAppleEXR。

现在的整体层次结构是由AppleEXR完成重要工作,ImageIO调用它,而CoreGraphics / AppKit / UIKit / vImage则调用ImageIO。MacOS / iOS / tvOS / watchOS的支持是相同的。

Ventura还改善了对EXRs线性色彩空间的支持。在此之前,如果您不将其绘制到扩展范围的绘图表面上,则色调映射可能只涉及剪切。

如果您想要在应用程序中使用OpenEXR库API,您需要下载源代码并为您的机器构建该库。ImageIO和libAppleEXR提供C级别的编程接口,并且由于通常的C++稳定ABI问题,无法采用OpenEXR的C++接口以包含到系统库中。


我要注意的是,在最后一次检查时,开源EXR实现并没有针对ARM架构进行向量化,例如苹果M系列桌面处理器和所有iOS / tvOS / watchOS设备。因此,在可以的情况下,最好使用苹果的实现。由于mmap与read之间的速度较慢,可能需要进行一些调整才能实现速度。 - Ian Ollmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接