有一些样例可以实现这个,但它们是针对Windows Phone 8.0或8.1 Silverlight的。
但是如何在Windows Phone 8.1 Runtime上实现呢?
有一些样例可以实现这个,但它们是针对Windows Phone 8.0或8.1 Silverlight的。
但是如何在Windows Phone 8.1 Runtime上实现呢?
您无法从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
using System.Runtime.InteropServices.WindowsRuntime;
才能访问 AsStream()
扩展方法。 - Felix尝试过这个吗?
private byte[] ConvertToBytes(BitmapImage bitmapImage)
{
byte[] data = null;
using (MemoryStream stream = new MemoryStream())
{
WriteableBitmap wBitmap = new WriteableBitmap(bitmapImage);
wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
data = stream.GetBuffer();
}
return data;
}