将Windows.UI.Xaml.Controls.Image转换为byte [] Windows phone8.1

时间:2015-05-29 20:31:43

标签: c# xaml windows-phone-8

为了简单起见,我在我的C#类中有一个名为MyImage的Windows.UI.Xaml.Controls.Image。我想将它转换为byte [],以便我可以将它存储到我的数据库。我不知道如何做到这一点,因为图像是Windows.UI.Xaml.Controls.Image而不是System.Drawing.Image所以我做不到这样的事情:

...
 MemoryStream ms = new MemoryStream();
 imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
   return  ms.ToArray();

如果有人能够写下一个简单的“如何”代码来执行此操作,我将不胜感激,因为我无法弄明白。

1 个答案:

答案 0 :(得分:0)

我相信您正在使用位图图像

myImage = new BitmapImage(new Uri("YourImagePath", UriKind.Absolute));
MemoryStream ms = new MemoryStream();
WriteableBitmap wb = new WriteableBitmap(myImage);
wb.SaveJpeg(ms, myImage.PixelWidth, myImage.PixelHeight, 0, 100);
byte[] imageBytes = ms.ToArray();

这适用于Windows Phone但是如果您正在为Windows Store App编写代码,建议您修改它。

myImage = new BitmapImage(new Uri("YourImagePath"));
RandomAccessStreamReference rasr = RandomAccessStreamReference.CreateFromUri(bitmapImage.UriSource);
var streamWithContent = await rasr.OpenReadAsync();
byte[] buffer = new byte[streamWithContent.Size];
await streamWithContent.ReadAsync(buffer.AsBuffer(), (uint)streamWithContent.Size, InputStreamOptions.None);