C# Windows 8 metro应用程序将现有图像转换为字节[]

C# Windows 8 metro应用程序将现有图像转换为字节[],c#,C#,我正在尝试将现有图像(在我的应用程序中的按钮内)保存到byte[],然后将其保存到SQLite数据库。我知道如何使用FileOpenPicker加载并转换为irandomaccesstream,我知道如何保存到数据库,但我不知道如何在metro应用程序/windows UI中将现有图像转换为字节数组 我搜索了很多,但主要是找到了FileOpenPicker的例子,或者是使用内存流的例子,而这似乎不适用于metro应用程序 谢谢。您可以使用数据阅读器作为 var file = await

我正在尝试将现有图像(在我的应用程序中的按钮内)保存到byte[],然后将其保存到SQLite数据库。我知道如何使用
FileOpenPicker
加载并转换为
irandomaccesstream
,我知道如何保存到数据库,但我不知道如何在metro应用程序/windows UI中将现有图像转换为字节数组

我搜索了很多,但主要是找到了FileOpenPicker的例子,或者是使用内存流的例子,而这似乎不适用于metro应用程序


谢谢。

您可以使用
数据阅读器作为

    var file = await new FileOpenPicker().PickSingleFileAsync();
    var fStream = await file.OpenAsync(FileAccessMode.Read);

    var reader = new DataReader(fStream.GetInputStreamAt(0));
    var bytes = new byte[fStream.Size];
    await reader.LoadAsync((uint)fStream.Size);
    reader.ReadBytes(bytes);
最后,您可以将
字节
保存到数据库中

这里还有一个例子

添加编辑

WinRT您将需要使用

引用

基本上,您需要将图像加载到可写的位图中,然后 通过调用PixelBuffer.AsStream()访问其像素缓冲区


该图像位于我的应用程序中的一个按钮内。我不需要使用FileOpenPicker。我需要将该图像转换为字节数组。是否可以共享一些代码/xaml?顺便说一句,您可以检查按钮的bacground属性以获得位图图像,您可以将其转换为字节数组的foreach(ButtonsCollection中的var btn){var bmp=btn.Image;//我需要将bmp转换为irandomaccesstream,我被卡住了////var reader=new DataReader(stream.GetInputStreamAt(0));//var bytes=new byte[stream.Size];wait reader.LoadAsync((uint)stream.Size);reader.ReadBytes(bytes);}感谢您的错误,但我正在使用c#windows 8 Metro应用程序,并且没有位图编码器帧。抱歉,我的错误..编辑了我的答案