如何组合两个 CIImage 的颜色通道和 Alpha 通道?

问题描述 投票:0回答:1

我有一个来自 YUV 数据的

CIImage
,没有 alpha 平面,以及一个灰度的
CIImage
。我想使用第二张图像作为 alpha 平面。目前,gpt 告诉我使用
CISourceOverCompositing
滤镜,但似乎该滤镜会混合第二个图像的颜色。如果我将灰度图像转换为黑色蒙版 (0, 0, 0, alpha),则此滤镜将使用黑色作为“背景色”。但是,我只想替换颜色而不是与另一种颜色混合

objective-c cifilter ciimage
1个回答
0
投票

您可以使用灰度图像作为蒙版将彩色图像与透明图像混合:

CIImage* clearBackground = [[CIImage clearImage] imageByCroppingToRect:colorImage.extent];

CIFilter* blendFilter = [CIFilter filterWithName:@"CIBlendWithMask"];
[blendFilter setValue:colorImage forKey:kCIInputImageKey];
[blendFilter setValue:clearBackground forKey:kCIInputBackgroundImageKey];
[blendFilter setValue:grayscaleImage forKey:kCIInputMaskImageKey];

CIImage* output = [blendFilter outputImage];
© www.soinside.com 2019 - 2024. All rights reserved.