gpt4 book ai didi

.net - 将图像数据缓冲区传递到 Windows Phone 8 上的 Windows 运行时

转载 作者:行者123 更新时间:2023-12-02 19:35:36 25 4
gpt4 key购买 nike

我正在尝试找到一种有效的方法,将图像数据缓冲区传递到 Windows Phone 8 上的 Windows 运行时组件,从而最大程度地减少需要复制缓冲区数据的次数。之前曾提出过类似但更普遍的问题:

参见Passing images from Windows (Phone) Runtime Components (c++/cx) to Native c++ Algorithms

背景

可以找到有关该主题的 MSDN 文章 here 。它建议使用 WriteableBitmap ,它可以将底层像素缓冲区公开为 IBuffer 对象,这允许 native 组件就地操作数据,而无需先复制缓冲区。

参见How to get access to WriteableBitmap.PixelBuffer pixels with C++?

但是,WriteableBitmap 所属的 Windows.UI.Xaml.Media.Imaging 命名空间不适用于 Windows Phone 8,仅适用于 Windows 8。可以使用 System.Windows.Media.Imaging.WriteableBitmap,但它只能访问 int[] 形式的图像像素数据。将其转换为 IBuffer 的一种方法是:

using System.Windows.Media.Imaging;
using System.Runtime.InteropServices.WindowsRuntime;

private static IBuffer AsBuffer(WriteableBitmap bitmap)
{
int[] p = bitmap.Pixels;
int len = p.Length * 4;
byte[] arr = new byte[len];
Buffer.BlockCopy(p, 0, arr, 0, len);
return arr.AsBuffer(); // Part of System.Runtime.InteropServices.WindowsRuntime
}

但它涉及不必要的缓冲区复制。

另一方面,根据此 MSDN article 传递数据的字节数组有其缺点。基本上,在 Windows 运行时中,参数要么用于输入,要么用于输出,而不是两者,这意味着最终需要进行一些复制。

寻求答案

  • 如何通过 Windows 运行时层有效地传递图像数据?
  • 什么 RT 类适合传递图像和视频流?简单的数组还是更复杂的缓冲区?

最佳答案

用于 native 代码的相机 api 是正确的选择: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj571202

您将直接在 C++ WinRT 组件代码中获取数据。请参阅此处的示例: http://library.developer.nokia.com/Community/Wiki/Getting_started_with_the_Camera_APIs_for_native_code

关于.net - 将图像数据缓冲区传递到 Windows Phone 8 上的 Windows 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com