【问题标题】:WinRt - FileSavePicker, save image from URI to fileWinRt - FileSavePicker,将图像从 URI 保存到文件
【发布时间】:2015-03-16 10:00:19
【问题描述】:

我想问一下如何将图像从流保存到文件。我已经创建了这个 FileSavePicker,但我不知道如何从 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();



    }

【问题讨论】:

    标签: c# windows windows-runtime windows-8.1


    【解决方案1】:

    我假设您已经将图像下载到 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();
    

    您可以通过在 StorageFile 上调用 OpenStreamForWriteAsync 将可写流写入您选择的文件。使用两个流,您可以调用 CopyTo 从 dataStream 复制到保存流。

    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);
    }
    

    【讨论】:

    • 我收到此错误“流不支持搜索。”
    • 这将取决于您的流来自哪里。如果您已经在开始,则可以省略 Seek 行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多