涉及alpha时CISourceOverCompositing的意外结果

时间:2015-05-01 11:42:23

标签: ios alpha core-image

当尝试使用CoreImage在具有100%alpha通道的另一个图像上放置具有60%alpha通道的图像时,我得到了一个我没有预料到的结果。如果我拍摄两张图像并将scene_2_480p放在scene_480p上,就像这样:

let back: CIImage = loadImage("scene_480p", type: "jpg");
let front: CIImage = loadImage("scene_2_480p", type: "png");
let composeFilter: CIFilter = CIFilter(name: "CISourceOverCompositing");
composeFilter.setDefaults();
composeFilter.setValue(front, forKey: kCIInputImageKey);
composeFilter.setValue(back, forKey: kCIInputBackgroundImageKey);
let result: CIImage = composeFilter.outputImage;

我明白了:

enter image description here

如果我对gimp做同样的事情,并将相同的两个图像放在两个重叠的层上,我得到:

enter image description here

结果很接近,但不一样。任何人都可以解释为什么结果不一样以及如何获得相同的gimp结果?

这些是我使用的原始图像:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

我仍然无法回答"为什么"问题,但通过使用this,可以使用正确的alpha值获得正确的结果。对于相同的结果,必须将比例设置为1.0。