Переключение переднего плана и фона для 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, смешанным сверху.

Другие вопросы по тегам