我一直在尝试将诺基亚映像SDK中的过滤器应用于WriteableBitmap。到目前为止,我没有任何成功。我得到的"最好的"是以下内容,它在renderer.RenderAsync()
MemoryStream stream = new MemoryStream(App.MainViewModel.Current.Album.Cover.ToByteArray());
StreamImageSource streamImage = new StreamImageSource(stream);
FilterEffect filters = new FilterEffect(streamImage);
WriteableBitmapRenderer renderer = new WriteableBitmapRenderer(filters);
BlurFilter blurFilter = new BlurFilter();
filters.Filters = new[] { blurFilter };
var result = await renderer.RenderAsync();
封面上的ToByteArray()
扩展方法(这是一个WriteableBitmap
)由WriteableBitmapEx库提供。
有没有人遇到同样的问题?
你在渲染器中得到一个异常。RenderAsync(),因为您没有设置 WriteableBitmapRenderer 的 WriteableBitmap 属性。
WriteableBitmapRenderer 无法为您创建 WriteableBitmap,因为它需要在 UI 线程上创建。因此,您必须自己创建它并将其传递到渲染器对象中(在构造函数中或通过设置属性)。