ios - CGContextClipToMask 可以用 alpha=1 屏蔽所有非透明像素吗?

标签 ios core-graphics

是否可以使CGContextClipToMask忽略蒙版图像的灰度值并像纯黑白一样工作?

我有一个灰度图像,当我将其用作蒙版时,灰色被解释为 Alpha channel 。这很好,除了我需要完全屏蔽那些不透明的像素。

简短示例:

UIImage *mask = [self prepareMaskImage];
UIGraphicsBeginImageContextWithOptions(mask.size, NO, mask.scale); {
  // Custom code
  CGContextClipToMask(UIGraphicsGetCurrentContext(), mask.size, mask.CGImage);
  // Custom code
}

是否可以调整此代码来实现我的目标?

长话短说:我需要使透明的灰度图像在原来的位置变为透明,在纯色的位置变为全黑。

最佳答案

有趣的问题! Here's code我认为这就是您在一个简单的示例项目中想要的。与上面类似,但可以正确处理比例。如果需要,还可以选择保留蒙版图像中的 Alpha。快速组合测试似乎有效。

关于ios - CGContextClipToMask 可以用 alpha=1 屏蔽所有非透明像素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622202/

相关文章:

ios - 应用程序终止时使用位置更新

ios - 当我尝试快速绘制渐变时出现问题

iphone - iOS 灰度/黑白

c# - Swift 将具有关联参数的多个文件上传到 ASP.NET 方法

ios - Firebase unauth() 代码是否正确?

ios - 如何以编程方式在 iPhone 上启用引导访问(Kiosk 模式)?

ios - 使用 PDF 矢量图像作为内容时 CALayer 模糊

ios - 在 iOS 中绘制全屏线性渐变的最快方法

ios - 使用 IBDesignable+UIView(storyboard) 查看绘图,但在应用程序上看不到

ios - 如何展开 - 在 Swift 中折叠 UITextView?