1

I'm trying to use the Nokia Imaging SDK to blend an image I used the ChromaKeyFilter on onto a background image. I'd also like to to this in the same rendering process.

So far I've got this:

IList<IFilter> finalFilters = new List<IFilter>();
finalFilters.Add(_chromaKeyFilter);
finalFilters.Add(blendFilter);

However, now the background image is on top, which of course should be the other way arround. Can I somehow switch this? Or is this even the right way to go? Thanks.

4

1 回答 1

2

在典型情况下,您有一个背景图像(使用一个 *ImageSource 设置)和一个前景图像(使用另一个 *ImageSource 设置)。

ChromaKeyFilter(在 FilterEffect 中)可以看作是一种修改器,它可以在图像中创建透明度。在这里它被应用于前景,这基本上会在设置与像素匹配的地方切掉透明孔(零 alpha)。

然后将 BlendFilter(在另一个FilterEffect 中)应用于背景,将前景中的 FilterEffect 作为其 ForegroundSource 以将前景图像放在其顶部。

尝试使用伪代码的示例:

// Foreground chain:
var fg = new BufferImageSource(...);
var fgWithTransparency = new FilterEffect(fg) 
{ 
    Filters = new [] { new ChromaKeyFilter(...) }
};

// Background/compositing chain:
var bg = new BufferImageSource(...);
var bgAndFgComposited = new FilterEffect(bg) 
{ 
    Filters = new [] { new BlendFilter(fgWithTransparency) }
};

如果您现在渲染 bgFilterEffect,您将获得显示 bg 和 fg 混合在顶部的合成结果。

于 2013-12-14T21:31:58.827 回答