Lumia成像sdk 3模糊效果问题(找不到组件)(异常来自HRESULT: 0x88982F50))
本文关键字:异常 成像 HRESULT 0x88982F50 组件 找不到 模糊 Lumia 问题 sdk | 更新日期: 2023-09-27 18:17:47
我需要渲染一个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();
问题似乎是死锁,但我找不到解决办法
edit: code updated
我在使用Lumia Imaging SDK时遇到了同样的问题。我还在检查这个问题。然而,要模糊图像,使用Win2D是另一种选择。
你上面的代码展示了如何渲染一个XAML元素作为一个流或什么的,然后你可以使用Win2D库模糊它。我有一篇文章简单地讨论了如何做模糊的东西。
希望能有所帮助。
既然你有一个IBuffer的结果(IBuffer buffer),那么跳过所有的缓冲区操作,只是创建一个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();
}
也就是说,我看不出你写的代码有什么明显的问题。我得调查一下,但在那之前,你确定流是在开头吗?这是流的常见错误