我正在盯着诺基亚成像SDK玩它。现在,我遇到的问题是我已经存在一个Image(在我的visual studio解决方案的文件夹中),我想转换这个图像,以便在 BlendFilter 类中使用它诺基亚成像SDK 。但是我不知道如何使用它。
我试图转换流中的现有图像,然后将其作为参数传递给 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 类?任何一个例子都会非常有用。
问候!
答案 0 :(得分:5)
Blend过滤器将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();
}
}