Lumia imaging sdk 3 blur effect issue (找不到组件。(Exception from HRESULT: 0x88982F50))
Lumia imaging sdk 3 blur effect issue (The component cannot be found. (Exception from HRESULT: 0x88982F50))
我需要渲染一个 xaml 元素并使用 LumiaImageSDK 3
应用模糊效果
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();
似乎问题是死锁,但我找不到解决方案
编辑:代码已更新
我在使用 Lumia Imaging SDK 时遇到了同样的问题。我还在检查这个问题。但是,要模糊图像,使用 Win2D 是另一种选择。
您上面的代码显示了如何将 XAML UIElement 呈现为 s 流或其他。然后您可以使用 Win2D 库对其进行模糊处理。我 post 只是在谈论如何做模糊的东西。
希望对您有所帮助。
既然你有一个带有结果的 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();
}
也就是说我看不出您编写的代码存在明显的问题。我将不得不调查它,但在那之前,你确定流是在开头吗?这是流的常见错误。
我需要渲染一个 xaml 元素并使用 LumiaImageSDK 3
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();
似乎问题是死锁,但我找不到解决方案
编辑:代码已更新
我在使用 Lumia Imaging SDK 时遇到了同样的问题。我还在检查这个问题。但是,要模糊图像,使用 Win2D 是另一种选择。
您上面的代码显示了如何将 XAML UIElement 呈现为 s 流或其他。然后您可以使用 Win2D 库对其进行模糊处理。我 post 只是在谈论如何做模糊的东西。
希望对您有所帮助。
既然你有一个带有结果的 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();
}
也就是说我看不出您编写的代码存在明显的问题。我将不得不调查它,但在那之前,你确定流是在开头吗?这是流的常见错误。