Переключение переднего плана и фона для Nokia Imaging SDK: BlendFilter()
Я пытаюсь использовать Nokia Imaging SDK, чтобы смешать изображение, на котором я использовал ChromaKeyFilter, с фоновым изображением. Я также хотел бы сделать это в том же процессе рендеринга.
Пока у меня есть это:
IList<IFilter> finalFilters = new List<IFilter>();
finalFilters.Add(_chromaKeyFilter);
finalFilters.Add(blendFilter);
Тем не менее, теперь фоновое изображение находится сверху, что, конечно, должно быть наоборот. Могу ли я как-то переключить это? Или это даже правильный путь? Благодарю.
1 ответ
В типичном случае у вас есть фоновое изображение (настроенное с использованием одного *ImageSource) и изображение переднего плана (настроенное с использованием другого *ImageSource).
ChromaKeyFilter (в FilterEffect) можно рассматривать как модификатор, который создает прозрачность в изображении. Здесь это применяется к переднему плану, это в основном вырезает прозрачные отверстия (ноль альфа) везде, где настройки соответствуют пикселям.
Затем 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, смешанным сверху.