Bitmap Images And Image Masks

2020-03-13  本文已影响0人  渐z

位图图像信息

Quartz 支持多种图像格式,并且内置了几种流行格式的支持。在 iOS 中,内置的格式包括 JPEGGIFPNGTIFICOGMPXBMCUR 格式。其他位图图像格式或专有格式要求我们为 Quartz 指定有关图像格式的详细信息,以确保正确解释图像。提供给CGImageCreate函数的图像数据必须以每像素为单位进行交织,而不是以每扫描行为单位。Quartz 不支持平面数据。

本节介绍与位图图像关联的信息。 当创建并使用 Quartz 图像(使用CGImageRef数据类型)时,您会看到某些 Quartz 图像创建函数需要您指定所有这些信息,而其他函数则只需要这些信息中的一部分。您提供的内容取决于位图数据所使用的编码,以及位图是表示图像还是图像掩模(image mask)。

注意:为了在处理原始图像数据时获得最佳性能,请使用 vImage framework。可以使用vImageBuffer_InitWithCGImage函数从CGImageRef引用将图像数据导入 vImage。有关详细信息,请参看 Accelerate Release Notes

Quartz 在创建位图图像(CGImageRef)时使用以下信息:

像素格式

像素格式包含以下信息:

颜色空间和位图布局

为了确保 Quartz 正确解释每个像素的位(bit),必须指定:

当使用CGImageCreate函数创建图像时,需要提供一个CGImageBitmapinfo类型的bitmapinfo参数来指定位图布局信息。以下常量指定 alpha 分量的位置以及颜色分量是否已经预乘 alpha:

可以使用kCGBitmapFloatComponents常量来指定使用浮点值的位图格式。对于浮点格式,可以将此常量与以上列出的某个常量进行OR运算。例如,对于使用预乘 alpha 的每个像素占 128 位并且 alpha 位于每个像素的最低有效位中的浮点格式,请向 Quartz 提供以下信息:

kCGImageAlphaNoneSkipLast | kCGBitmapFloatComponents

下图直观地描述了如何在使用 16-bit 或者 32-bit 整数像素格式的 CMYK 和 RGB 颜色空间中表示像素。32-bit整数像素格式的每个分量占 8 bit,16-bit 整数像素格式每个分量占 5 bit。Quartz 还支持 128-bit 浮点像素格式,每个分量占 32 bit,128-bit 格式未在下图中显示。

32-bit and 16-bit pixel formats for CMYK and RGB color spaces in Quartz 2D.gif
上一篇 下一篇

猜你喜欢

热点阅读