WinRt - FileSavePicker,将图像从URI保存到文件



我想问一下如何将图像从流保存到文件。我已经创建了这个文件保存选择器,但我不知道如何从 Uri 保存图像

谢谢

  StreamReader reader = new StreamReader(dataStream);
                // Read the content.
               string responseFromServer = reader.ReadLine(); // URi with image

 private async void saveClick(object sender, RoutedEventArgs e)
    {
       var Picker = new FileSavePicker();
       Picker.FileTypeChoices.Add("Image", new List<string>() { ".jpg" });
       StorageFile file = await Picker.PickSaveFileAsync();

    }

我假设您已经将图像下载到dataStream中。如果没有,您可以使用 HttpClient 类执行此操作:

var uri = new Uri("http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo-med.png");
Windows.Web.Http.HttpClient httpClient = new HttpClient();
var stream = await httpClient.GetInputStreamAsync(uri);
Stream dataStream = stream.AsStreamForRead();

您可以通过在存储文件上调用 OpenStreamForWriteAsync 来获取所选文件的可写流。使用两个流,可以调用 CopyTo 从数据流复制到存储流。

var Picker = new FileSavePicker();
Picker.FileTypeChoices.Add("Image", new List<string>() { ".jpg" });
StorageFile file = await Picker.PickSaveFileAsync();
using (Stream saveStream = await file.OpenStreamForWriteAsync())
{
    dataStream.Seek(0, SeekOrigin.Begin);
    await dataStream.CopyToAsync(saveStream);
}

最新更新