IOS image masking 中为什么masked 图像像素RGB 值显示原始图像RGB 值?

Why does masked image pixel RGB values show original image RGB values in IOS image masking?

我正在使用分割技术开发图像处理移动应用程序。我尝试获取蒙版图像并成功。但是,当我想将蒙版图像保存到我的相册时,即使 UIImage 视图显示蒙版图像,原始图像也会被保存。此外,我想更改屏蔽区域的白色背景像素颜色,并意识到屏蔽像素的原始图像 RGB 值仍然受到保护。下面是我用来屏蔽图像和读取的 RGB 值的代码。蒙版图像中蒙版区域像素为 255(表示 1),非蒙版区域为 0。请查看我按预期获得的图像。但是RGB颜色和保存的图像不是蒙版图像而是原始图像(图像)。我做错了什么?任何解释为什么原始图像的 RGB 颜色仍然在蒙版图像中读取而 UIview 似乎正确(白色背景)

    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)

    let maskedReference = imageReference!.masking(imageMask!)

    let maskedImage = UIImage(cgImage:maskedReference!)
    
    print(mask.getPixelColor(x: 0, y: 0)!)
    print(image.getPixelColor(x: 0, y: 0)!)
    print(maskedImage.getPixelColor(x: 0, y: 0)!)

   return maskedImage
}

第一个像素(左上)的打印值按顺序排列: UIExtendedSRGBColorSpace 1 1 1 1 (mask) 白色如预期 UIExtendedSRGBColorSpace 0.0313725 0.0313725 0.0313725 1(图像)几乎像预期的那样黑 UIExtendedSRGBColorSpace 0.0313725 0.0313725 0.0313725 1 (masked image) 假设为 1 1 1 1

]

]

]

我在下面的link中找到了原因:

看来我们需要将蒙版图像绘制到Imagecontext中。我测试了给定的代码并且工作正常。