C# 将图像从web保存到Windows Phone 8.1 RT C中的“已保存图片”文件夹

C# 将图像从web保存到Windows Phone 8.1 RT C中的“已保存图片”文件夹,c#,image,windows-runtime,windows-phone-8.1,dotnet-httpclient,C#,Image,Windows Runtime,Windows Phone 8.1,Dotnet Httpclient,如何将图像保存到Windows Phone 8.1 RT中的Saved Pictures文件夹?我使用HttpClient从web下载了该图像。如果您希望用户选择您需要使用的文件位置 如果要在用户不选择目的地的情况下保存它,则需要使用以下内容: Windows.Storage.KnownFolders.picturesLibrary.createFileAsync 我相信在这两种情况下,您都需要在清单中设置图片库。多亏MSDN论坛上的mSpot Inc,我才解决了这个问题。我现在使用的代码是:

如何将图像保存到Windows Phone 8.1 RT中的Saved Pictures文件夹?我使用HttpClient从web下载了该图像。

如果您希望用户选择您需要使用的文件位置

如果要在用户不选择目的地的情况下保存它,则需要使用以下内容:

Windows.Storage.KnownFolders.picturesLibrary.createFileAsync

我相信在这两种情况下,您都需要在清单中设置图片库。

多亏MSDN论坛上的mSpot Inc,我才解决了这个问题。我现在使用的代码是:

StorageFolder picsFolder = KnownFolders.SavedPictures;
StorageFile file = await picsFolder.CreateFileAsync("myImage.jpg", CreationCollisionOption.GenerateUniqueName);

string url = "http://somewebsite.com/someimage.jpg";
HttpClient client = new HttpClient();

byte[] responseBytes = await client.GetByteArrayAsync(url);

var stream = await file.OpenAsync(FileAccessMode.ReadWrite);

using (var outputStream = stream.GetOutputStreamAt(0))
{
    DataWriter writer = new DataWriter(outputStream);
    writer.WriteBytes(responseBytes);
    writer.StoreAsync();
    outputStream.FlushAsync();
}
你只需要这个

var url = "Some URL";
var fileName = Path.GetFileName(url.LocalPath);
var thumbnail = RandomAccessStreamReference.CreateFromUri(url);

var remoteFile = await StorageFile.CreateStreamedFileFromUriAsync(fileName, url, thumbnail);
await remoteFile.CopyAsync(KnownFolders.SavedPictures, fileName, NameCollisionOption.GenerateUniqueName);

您需要在清单中设置图片库功能。

目前,我使用本机实现:

var url = new Uri(UriString, UriKind.Absolute);
var fileName = Path.GetFileName(url.LocalPath);

var w = WebRequest.CreateHttp(url);
var response = await Task.Factory.FromAsync<WebResponse>(w.BeginGetResponse, w.EndGetResponse, null);
await response.GetResponseStream().CopyToAsync(new FileStream(ApplicationData.Current.LocalFolder.Path + @"\" + fileName, FileMode.CreateNew));
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
await file.CopyAsync(KnownFolders.SavedPictures, fileName, NameCollisionOption.FailIfExists);

是否有任何方法将BitmapImage源转换为Btye数组,然后使用此字节数组保存图像,而不是从url获取流。实际上,我想在我的应用程序中减少互联网的使用。任何帮助都将不胜感激这看起来好多了!我将在下一个版本中尝试。如何在Javascript中实现相同的功能??