`kCGImageSourceShouldAllowFloat` 用于图像 I/O 的目的是什么?

问题描述

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

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

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

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

解决方法

TIFF 文件支持浮点值。例如,每像素 128 位格式接受 32 位浮点分量。见About Bitmap Images and Image Masks。另请参阅 Supported Pixel Formats 以了解图形上下文支持的像素格式表。

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...