Windows 8 从图像创建字节数组
从图像创建字节数组的最佳方法是什么?我见过很多方法,但在WinRT中没有一种有效。这里有一种方法 或者,如果您将图像保存在FS上,只需创建一个存储文件并使用流获取字节[]以下是一种方法 或者,如果您将图像保存在FS上,只需创建一个StorageFile并使用流获取字节[],神奇之处在于。例如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
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;
}
}
}
}