作为掩码的CGImageRef和不是掩码的CGImageRef有什么区别?

时间:2011-06-13 17:42:53

标签: iphone objective-c ipad core-graphics

我发现CGBitmapContextCreateImage()会创建一个图像,但不一定总是与CGContextClipToMask()兼容的图像。但是当使用CGImageMaskCreate()时,CGImageRef始终是一个与CGContextClipToMask()一起使用的掩码。现在,面具VS有什么特别之处。 “正常”的形象?

我的猜测是掩码只是灰度,而用CGBitmapContextCreateImage()创建的CGImageRef可能会激活CGContextClipToMask()的RGBA值。我在文档中找不到掩模和CG图像之间确切差异的位置。

但似乎核心图形图像!=掩模,而掩模==核心图形图像

2 个答案:

答案 0 :(得分:2)

图像中的每个值,无论是RGB,CMYK还是灰度,都代表特定颜色空间中的位置。问“颜色空间'x'中的这个值是什么?”是有意义的。 - 如果可能,结果将是相同的颜色,但可以是不同的数值。

例如(简单地)。值(255,255,255)的像素在RGB颜色空间中为白色,在(假设的)CMY颜色空间中为黑色。将白色RGB像素转换为CMY色彩空间将给出值(0,0,0)。换句话说,一个图像必须有一个颜色空间,它只有在颜色空间才有意义。

相反,8位掩码表示0-255之间的绝对值。没有颜色空间,想到特定颜色空间中的掩模是没有意义的。

以这种方式,图像和蒙版根本不同,即使我们经常将蒙版视为灰度图像。

答案 1 :(得分:0)

Core Graphics中的图像蒙版是一种特殊的图像。来自CGImageMaskCreate参考:

  

Quartz位图图像蒙版的使用方式与艺术家使用丝网印刷的方式相同,或者标志画家使用模板。位图表示通过其传输颜色的掩码。位图本身没有颜色。它从当前在图形状态中设置的填充颜色中获取颜色。

     

当您使用位图图像蒙版绘制上下文时,Quartz使用蒙版来确定当前填充颜色应用于图像矩形的位置和方式。掩码中的每个样本值指定在特定位置屏蔽掉当前填充颜色的大小。实际上,样本值指定了蒙版的不透明度。较大的值表示较大的不透明度,因此应用于页面的颜色较少。

在此处查看更多内容:http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGImage/Reference/reference.html