我发现CGBitmapContextCreateImage()
会创建一个图像,但不一定总是与CGContextClipToMask()
兼容的图像。但是当使用CGImageMaskCreate()时,CGImageRef始终是一个与CGContextClipToMask()
一起使用的掩码。现在,面具VS有什么特别之处。 “正常”的形象?
我的猜测是掩码只是灰度,而用CGBitmapContextCreateImage()
创建的CGImageRef可能会激活CGContextClipToMask()
的RGBA值。我在文档中找不到掩模和CG图像之间确切差异的位置。
但似乎核心图形图像!=掩模,而掩模==核心图形图像
答案 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使用蒙版来确定当前填充颜色应用于图像矩形的位置和方式。掩码中的每个样本值指定在特定位置屏蔽掉当前填充颜色的大小。实际上,样本值指定了蒙版的不透明度。较大的值表示较大的不透明度,因此应用于页面的颜色较少。