【问题标题】:What's the difference between an CGImageRef that is a mask, and one that is not a mask?作为蒙版的 CGImageRef 和不是蒙版的 CGImageRef 有什么区别?
【发布时间】:2011-06-13 17:42:52
【问题描述】:

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

我的猜测是蒙版只是灰度,而使用CGBitmapContextCreateImage() 创建的 CGImageRef 可能具有刺激CGContextClipToMask() 的 RGBA 值。我在文档中找不到解释蒙版和 CG 图像之间确切区别的地方。

但似乎一个核心图形图像!= 一个蒙版,而一个蒙版 == 一个核心图形图像

【问题讨论】:

    标签: iphone objective-c ipad core-graphics


    【解决方案1】:

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

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

    相反,一个 8 位掩码表示 0-255 之间的绝对值。没有色彩空间,在特定的色彩空间中考虑蒙版是没有意义的。

    这样一来,图像和蒙版就根本不同,尽管我们经常将蒙版视为灰度图像。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-03-28
        • 1970-01-01
        • 2010-11-11
        • 1970-01-01
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        相关资源
        最近更新 更多