有一些示例可以执行此操作,但它们适用于 Windows Phone 8.0 或 8.1 Silverlight。

但是如何为 Windows Phone 8.1 运行时做到这一点呢?

最佳答案

您无法从 Windows.UI.Xaml.Media.Imaging 中提取像素。 BitmapImage

最通用的解决方案是使用 WriteableBitmap 而不是 BitmapImage。这些类都是 BitmapSources 并且几乎可以互换使用。 WriteableBitmap 通过其 PixelBuffer 属性提供对其像素数据的访问:

byte[] pixelArray = myWriteableBitmap.PixelBuffer.ToArray(); // convert to Array
Stream pixelStream = wb.PixelBuffer.AsStream();  // convert to stream

否则,您将需要从 BitmapImage 获取像素的任何地方获取像素。根据 BitmapImage 的初始化方式,您可以从其 UriSource 属性中找到它的来源。 WinRT Xaml Toolkit 有一个 extension method FromBitmapImage 来从基于其 UriSource 的 BitmapImage 创建一个 WriteableBitmap。

一个丑陋的选择是将 BitmapImage 渲染为图像,根据图像创建一个 RenderTargetBitmap,然后使用 RenderTargetBitmap 获取其像素。 CopyPixelsAsync ()

关于c# - 在 Windows Phone 8.1 运行时将 BitmapImage 转换为 byte[] 数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34184855/

10-13 03:23