.net – 在Windows Phone 8上将图像数据缓冲区传递给Windows运行
我正在尝试找到一种有效的方法将图像数据缓冲区传递到
Windows Phone 8上的Windows运行时组件,从而最大限度地减少需要复制缓冲区数据的次数.之前已经提出了类似但更一般的问题:
见Passing images from Windows (Phone) Runtime Components (c++/cx) to Native c++ Algorithms 背景 有关该主题的MSDN文章可以在here找到.它建议使用WriteableBitmap,它可以将底层像素缓冲区公开为IBuffer对象,这允许本机组件就地操作数据而不首先复制缓冲区. 见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,arr,len); return arr.AsBuffer(); // Part of System.Runtime.InteropServices.WindowsRuntime } 但它涉及不必要的缓冲区复制. 另一方面,根据MSDN article,传递字节数据数组有其缺点.基本上,在Windows运行时,参数既可以用于输入也可以用于输出,而不是两者,这意味着最终需要进行一些复制. 寻求答案 >如何通过Windows运行时层有效传递图像数据? 解决方法
本机代码的相机api是要走的路:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj571202 您将直接在您的c WinRT组件代码中获取数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows远程管理套件,不依赖于Active Directory,
- windows – 在Chrome和Firefox域强制执行“点击播
- 心跳丢失时重启Hyper-V VM
- 带有Windows身份验证的WebAPI返回401未授权
- 什么是Microsoft Exchange?它为何如此受欢迎?
- [官网]Windows 10 版本信息
- windows – 有什么区别b / w MMC.exe和certmgr.m
- vbscript – 为什么WScript.StdOut.Write方法在V
- 为什么VFP .NET OLEdb提供程序在64位Windows中不
- windows-server-2008 – 按用户和登录类型过滤安