如何在 uwp 平台中将图像转换为字节数组
How can I convert a image into a byte array in uwp platform
我需要将图像转换为字节数组以将其存储在数据库中。而且我还需要将该数组转换回图像。我做了 google 研究,但找不到解决方案,因为在 UWP
平台中,某些 api 不可用。
我从这些文章中找到了 theoutlander 所说的解决方案。
要将图像转换为字节[],我将使用存储文件的'OpenSequentialReadAsyn()'方法。
让我们假设我们的图像是 'file'。要将其转换为字节数组,请执行以下操作
using (var inputStream = await file.OpenSequentialReadAsync())
{
var readStream = inputStream.AsStreamForRead();
var byteArray = new byte[readStream.Length];
await readStream.ReadAsync(byteArray, 0, byteArray.Length);
return byteArray;
}
要将 byte[] 转换回图像,请执行以下操作,
using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
writer.WriteBytes(this.byteArray);
await writer.StoreAsync();
}
var image = new BitmapImage();
await image.SetSourceAsync(stream);
return image;
}
您可以在此找到更多信息 article。
我需要将图像转换为字节数组以将其存储在数据库中。而且我还需要将该数组转换回图像。我做了 google 研究,但找不到解决方案,因为在 UWP
平台中,某些 api 不可用。
我从这些文章中找到了 theoutlander 所说的解决方案。
要将图像转换为字节[],我将使用存储文件的'OpenSequentialReadAsyn()'方法。
让我们假设我们的图像是 'file'。要将其转换为字节数组,请执行以下操作
using (var inputStream = await file.OpenSequentialReadAsync())
{
var readStream = inputStream.AsStreamForRead();
var byteArray = new byte[readStream.Length];
await readStream.ReadAsync(byteArray, 0, byteArray.Length);
return byteArray;
}
要将 byte[] 转换回图像,请执行以下操作,
using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
{
using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
{
writer.WriteBytes(this.byteArray);
await writer.StoreAsync();
}
var image = new BitmapImage();
await image.SetSourceAsync(stream);
return image;
}
您可以在此找到更多信息 article。