我需要从图像中创建一个byte [],但首先我想我必须将它保存为像StorageFile之类的图像文件,并将其传递给此方法,该方法将完成这项工作:
private async Task<byte[]> StorageFileToByteArray(StorageFile file)
{
byte[] byteArray = new byte[0];
if (null != file)
{
IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read);
var reader = new DataReader(fileStream.GetInputStreamAt(0));
await reader.LoadAsync((uint)fileStream.Size);
byteArray = new byte[fileStream.Size];
}
return byteArray;
}
但是如何将它保存到StorageFile?
这是我在BitmapImage中加载它的方式:
BitmapImage bitmapImage = new BitmapImage(new Uri("ms-appx:///Assets/no_capture_receipt.png", UriKind.Absolute));
然后如何在StorageFile中保存此图像
答案 0 :(得分:2)
你想的更容易。
private async Task<byte[]> StorageFileToByteArray(string fileName) //filename = "no_capture_receipt.png"
{
var folder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Assets");
var storageFile = await folder.GetFileAsync(fileName);
var buffer = await Windows.Storage.FileIO.ReadBufferAsync(storageFile);
return buffer.ToArray();
}
不要忘记将图片的复制到输出目录更改为Copy if newer
!