我正试着把这个蒙版应用到原始图像上
注意有一些灰色区域,我想保留除了纯黑色之外的所有内容。
我找到了这个密码
func maskImage(image: UIImage, mask: UIImage) -> UIImage {
let imageReference = (image.cgImage)!
let maskReference = (mask.cgImage)!
let imageMask = CGImage(
maskWidth: maskReference.width
, height: maskReference.height
, bitsPerComponent: maskReference.bitsPerComponent
, bitsPerPixel: maskReference.bitsPerPixel
, bytesPerRow: maskReference.bytesPerRow
, provider: maskReference.dataProvider!
, decode: nil
, shouldInterpolate: true
)
return (UIImage(cgImage: (imageReference.masking(imageMask!))!))
}
但它做的恰恰相反,它删除了所有的白色像素。
1条答案
按热度按时间ubbxdtey1#
这段代码专门为蒙版图像创建了一个新的
CGContext
,并将颜色空间设置为灰度(CGColorSpaceCreateDeviceGray()
),以确保只有黑色像素被视为不透明。CGImageAlphaInfo.none
参数用于指定遮罩图像没有Alpha通道。通过将
maskReference
绘制到context
中,创建了具有保留所有非黑色像素的期望行为的遮罩。然后,使用maskImage
来掩蔽imageReference
,从而产生具有所需效果的图像。