ios - 为什么在IOS图像蒙版中蒙版图像像素RGB值显示原始图像RGB值?
问题描述
我正在开发具有分割技术的图像处理移动应用程序。我尝试获取蒙面图像并成功。但是,当我想将蒙版图像保存到我的相册时,即使 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(掩码)白色,如预期 UIExtendedSRGBColorSpace 0.0313725 0.0313725 0.0313725 1(图像)几乎为黑色,如预期 UIExtendedSRGBColorSpace 0.0313725 0.0313725 0.0313725 1)假设图像被屏蔽 1 1 1 1
解决方案
推荐阅读
- angular - Angular canvas MouseWheel:使用按钮滚动与缩放
- android - 无法显示数组列表中的所有 lst
- php - 操纵默认查询在 wordpress 中无法按预期工作
- wordpress - Timber Twig 文件中的 For 循环返回相同图像的三个副本(应该是 3 个不同的图像)
- c++ - 将这个包装在智能指针中的问题传递给 C++ 中的方法
- php - 卷曲响应需要很长时间
- c# - 带有 2 个条件和舍入数字的 IF 语句
- rust - Rust `Stream` 如何理解何时调用 `poll_next`?
- python - 如何递归地找到序列树的所有可能组合?
- html - Angular Material: Styling mat-form-field inside mat-toolbar