Lumia成像sdk 3模糊效果问题(无法找到该组件。(HRESULT异常:0x88982F50))

时间:2015-10-15 13:10:32

标签: c# windows-runtime windows-phone-8.1 winrt-xaml lumia-imaging-sdk

我需要使用LumiaImageSDK 3

渲染xaml元素并应用模糊效果
            var bitmapRended = new RenderTargetBitmap();
            await bitmapRended.RenderAsync(LayoutRoot);

            IBuffer buffer = await bitmapRended.GetPixelsAsync();

            var target = new WriteableBitmap(bitmapRended.PixelWidth, bitmapRended.PixelHeight);
            var source = new BufferImageSource(buffer);
            var blur = new BlurEffect(source, 128);

            var renderer = new WriteableBitmapRenderer(blur, target);

            var result = await renderer.RenderAsync();

            var imgBrush = new ImageBrush();
            imgBrush.ImageSource = result;

            Menu.Background = imgBrush;

但是当我运行代码时出现此错误:

The component cannot be found. (Exception from HRESULT: 0x88982F50)

at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

我认为这与我将RenderTargetBitmap转换为IRandomAccessStream的方式有关。

从这行代码引出异常:var result = await renderer.RenderAsync();

它认为问题是僵局但我无法找到解决方案

编辑:代码已更新

2 个答案:

答案 0 :(得分:2)

使用Lumia Imaging SDK时遇到了同样的问题。我还在检查这个问题。但是,要模糊图像,使用Win2D是另一种选择。

上面的代码显示了如何将XAML UIElement呈现为流或某事物。然后你可以使用Win2D库模糊它。我post只是谈论如何做模糊的东西。

希望它有所帮助。

答案 1 :(得分:1)

由于您有一个带有结果的IBuffer(IBuffer缓冲区),然后跳过所有缓冲区操作,只需创建一个BufferImageSource。

var target = new WriteableBitmap(bitmapRender.PixelWidth, bitmapRender.PixelHeight);
using (var source = new BufferImageSource(buffer))
using (var blur = new BlurEffect(source , 128))
using (var renderer = new WriteableBitmapRenderer(blur, target))
{
    var result = await renderer.RenderAsync();
}

那说我无法看到您编写的代码存在明显问题。我将不得不调查它,但在那之前,你确定流是在开头吗?这是流的常见错误。