图片 I/O 的 `kCGImageSourceShouldAllowFloat` 的目的是什么?

What is the purpose of `kCGImageSourceShouldAllowFloat` for Image I/O?

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

Whether the image should be returned as a CGImage object that uses floating-point values, if supported by the file format. CGImage objects that use extended-range floating-point values may require additional processing to render in a pleasing manner.

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

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

TIFF 文件支持浮点值。例如,每像素 128 位格式接受 32 位浮点分量。有关图形上下文支持的像素格式的 table,请参阅 About Bitmap Images and Image Masks. Also see Supported Pixel Formats

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

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