Windows 8 从图像创建字节数组

Windows 8 从图像创建字节数组,windows-8,windows-runtime,winrt-xaml,Windows 8,Windows Runtime,Winrt Xaml,从图像创建字节数组的最佳方法是什么?我见过很多方法,但在WinRT中没有一种有效。这里有一种方法 或者,如果您将图像保存在FS上,只需创建一个存储文件并使用流获取字节[]以下是一种方法 或者,如果您将图像保存在FS上,只需创建一个StorageFile并使用流获取字节[],神奇之处在于。例如 var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Asset

从图像创建字节数组的最佳方法是什么?我见过很多方法,但在WinRT中没有一种有效。

这里有一种方法

或者,如果您将图像保存在FS上,只需创建一个存储文件并使用流获取字节[]

以下是一种方法

或者,如果您将图像保存在FS上,只需创建一个StorageFile并使用流获取字节[]

,神奇之处在于。例如

var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.png"));
var buf = await FileIO.ReadBufferAsync(file);
var bytes = new byte[buf.Length];
var dr = DataReader.FromBuffer(buf);
dr.ReadBytes(bytes);
魔法就在这个世界上。例如

var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Logo.png"));
var buf = await FileIO.ReadBufferAsync(file);
var bytes = new byte[buf.Length];
var dr = DataReader.FromBuffer(buf);
dr.ReadBytes(bytes);
我使用了以下方法:

我使用了以下方法:

静态类ByteArrayConverter
{
公共静态异步任务ToByteArrayAsync(存储文件)
{
使用(irandomaccesstream=await file.OpenReadAsync())
{
使用(DataReader=newDataReader(stream.GetInputStreamAt(0)))
{
wait reader.LoadAsync((uint)stream.Size);
字节[]字节=新字节[stream.Size];
reader.ReadBytes(字节);
返回字节;
}
}
}
}
静态类ByteArrayConverter
{
公共静态异步任务ToByteArrayAsync(存储文件)
{
使用(irandomaccesstream=await file.OpenReadAsync())
{
使用(DataReader=newDataReader(stream.GetInputStreamAt(0)))
{
wait reader.LoadAsync((uint)stream.Size);
字节[]字节=新字节[stream.Size];
reader.ReadBytes(字节);
返回字节;
}
}
}
}

这是你试过的[Charles Petzold article]()吗?那是我需要的感谢这是你试过的[Charles Petzold article]()吗?那是我需要的感谢我猜他是指读取像素数据,而不是文件内容。我想是一样的。。。但是为了获得像素数据,你必须将图像(大写“I”)重新加载到一个可写的位图中,如果你这样做了,为什么不直接读取@JP提到的源代码呢!我猜他指的是读取像素数据,而不是文件内容。。。但是为了获得像素数据,你必须将图像(大写“I”)重新加载到一个可写的位图中,如果你这样做了,为什么不直接读取@JP提到的源代码呢!
static class ByteArrayConverter
    {
        public static async Task<byte[]> ToByteArrayAsync(StorageFile file)
        {
            using (IRandomAccessStream stream = await file.OpenReadAsync())
            {
                using (DataReader reader = new DataReader(stream.GetInputStreamAt(0)))
                {
                    await reader.LoadAsync((uint)stream.Size);
                    byte[] Bytes = new byte[stream.Size];
                    reader.ReadBytes(Bytes);
                    return Bytes;
                }
            }
        }
    }