3

Я смотрю с SDK Nokia Imaging, чтобы немного поиграть с ним. Теперь я столкнулся с проблемой, когда у меня есть изображение, которое уже существует (в папке в моем визуальном студийном решении), и я хочу преобразовать это изображение, чтобы использовать его в классе BlendFilterNokia Imaging SDK. Однако я не знаю, как его использовать.Как использовать BlendFilter от Nokia Imaging SDK на WP8?

Я пытался преобразовать существующее изображение в поток, а затем передать его в качестве параметра в BlendFilter. Но не удача. Компилятор говорит, что лучший метод перегрузки ... имеет некоторые недопустимые аргументы.

Это способ, которым я пытаюсь загрузить существующий файл в поток:

Image image = new Image(); 
image.Source = new BitmapImage(new Uri("/Images/Template3.2.png", UriKind.Relative)); 

BitmapImage bitImage = new BitmapImage(new Uri("/Images/Template3.2.png", UriKind.Relative)); 

WriteableBitmap Bitmap = new WriteableBitmap(bitImage); 

И потом:

var BlendFilter = new BlendFilter(bitImage, BlendFunction.Add); --> the compiler error is here 

Кто-нибудь знает, как использовать BlendFilter класс? любой пример был бы очень полезен.

С уважением!

ответ

5

Фильтр наложения принимает входной сигнал IImageProvider. Это означает, что вы можете использовать любой из классов X-ImageSource в качестве входных данных, и он будет выполнять всю работу внутри.

Если у вас есть поток изображения, я предлагаю вам создать StreamImageSource и передать его в BlendFilter.

Список различных источников изображений довольно длинный, я предлагаю вам ознакомиться с документацией и выбрать тот, который наиболее подходит вам.

Вот пример, который берет поток изображения как входной сигнал и смешивает новое изображение поверх него. Для простоты другое изображение - это просто изображение, заполненное одним цветом (ColorImageSource), но вы можете установить любой источник IImageProvider в качестве источника: выберите наиболее удобный.

using (var backgroundSource = new StreamImageSource(stream)) 
using (var filterEffect = new FilterEffect(backgroundSource)) 
{ 
    using (BlendFilter blendFilter = new BlendFilter()) 
    { 
     var size = new Windows.Foundation.Size(400, 400); 
     var color = Windows.UI.Color.FromArgb(250, 128, 255, 200); 

     blendFilter.ForegroundSource = new ColorImageSource(size, color); 
     blendFilter.BlendFunction = BlendFunction.Add; 

     filterEffect.Filters = new[] { blendFilter }; 

     var result = await new JpegRenderer(filterEffect).RenderAsync(); 
    } 
} 
+0

Привет Давид, спасибо за обмен этот код, я помог мне понять, как сделать то, что я искал – MikePR

+0

@MikePR Рад помочь! –

Смежные вопросы