首页 > 解决方案 > `kCGImageSourceShouldAllowFloat` 用于图像 I/O 的目的是什么?

问题描述

在 macOS 上使用 Image I/O 时,有一个选项kCGImageSourceShouldAllowFloat记录如下:

如果文件格式支持,图像是否应作为使用浮点值的 CGImage 对象返回。使用扩展范围浮点值的 CGImage 对象可能需要额外的处理才能以令人愉悦的方式呈现。

但它没有说明什么文件格式支持它或有什么好处,只是它可能会更慢。

有谁知道什么文件格式支持这个以及有什么好处?

标签: swiftcocoacgimagecgimagesource

解决方案


TIFF 文件支持浮点值。例如,每像素 128 位格式接受 32 位浮点分量。请参阅关于位图图像和图像蒙版。另请参阅支持的像素格式以获取图形上下文支持的像素格式表。

就浮点、每通道 32 位的好处而言,它只是意味着每个通道有更多可能的颜色渐变。通常,您无法用肉眼看到这一点(每个通道超过 16 位),但如果您开始应用调整(传统上是多曲线或水平调整),则意味着您不太可能体验到图像的分色。因此,如果 (a) 图像已经具有此级别的信息;(b) 您可能需要对图像执行这些类型的调整,然后每个组件添加 32 位的数据可能会有好处。否则,这些信息量的好处是有限的。

最重要的是,如果您可能正在编辑可能已经具有浮点组件的资产,请使用浮点。但通常我们不需要或使用这一级别的信息。无论如何,我们处理的大多数 JPG 和 PNG 资源每个组件都是 8 位。


推荐阅读