【发布时间】:2011-05-07 17:31:10
【问题描述】:
我正在尝试制作一个 Windows Phone 7 应用程序来保存一些网络上的图像,我不知道我可以在哪里或者是否可以将网络上的图像保存到手机中。
如何保存图片?
【问题讨论】:
标签: c# image download windows-phone-7
我正在尝试制作一个 Windows Phone 7 应用程序来保存一些网络上的图像,我不知道我可以在哪里或者是否可以将网络上的图像保存到手机中。
如何保存图片?
【问题讨论】:
标签: c# image download windows-phone-7
您可以使用WebClient 或WebRequest 下载它们以获取原始字节。
然后您可以相当轻松地保存到isolated storage - 但我不相信您可以保存在图片中心看到的任何位置,如果那是您的目标的话。 (我在Microsoft.Phone.Tasks namespace 中看不到任何相关的内容。有一些任务可以捕获选择照片的相机,但不能保存一张。)
编辑:哦,我刚刚找到了一种方法。您可以使用MediaLibrary 类和它的SavePicture 方法...虽然这是在XNA 中,所以我至少担心 它在Silverlight 应用程序中工作。我知道 XNA API 的某些部分可以在 Silverlight 中工作,而有些则不能。值得尝试。
【讨论】:
在手机上,根据我在此处发布的项目,您可以使用 HttbWebRequest(建议避免 UI 影响)或 WebClient。
WebClient, HttpWebRequest and the UI Thread on Windows Phone 7
然后您可以获取您的流并将其传递到这种形式的东西中以将其写入隔离存储。
private void PicToIsoStore(Stream pic) {
using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) {
var bi = new BitmapImage();
bi.SetSource(pic);
var wb = new WriteableBitmap(bi);
using (var isoFileStream = isoStore.CreateFile("somepic.jpg")) {
var width = wb.PixelWidth;
var height = wb.PixelHeight;
Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100);
}
}
}
Jon 是正确的,您也可以使用 MediaLibrary.SavePicture。请注意,这会将图片与图片中心中的用户照片混合在一起。
这和
一样简单private void PicToMediaLibary(Stream pic) {
MediaLibrary lib = new MediaLibrary();
lib.SavePicture("blah", pic);
}
将其存储在隔离存储中基本上是您的应用程序私有文件系统。
【讨论】: