2013-03-09 97 views
0

我一直在尝试从Windows Phone 7中的URL保存图像后一直打墙。我试过http://imagetools.codeplex.com/和WritableBimap,但我总是遇到问题,无论是不加载(高度是零,因为图像没有加载,或其他跨线程异常(因为我使用一个后台线程)。有一个简单的库,它让我保存和从URL调整图片?从URL保存图像

+1

你收到了什么错误? – GangstaGraham 2013-03-09 16:51:20

+0

问题是我正在从后台线程中尝试保存到'IsolatedStorage'。图像只是不会加载。我尝试过使用'ManualResetEvent',在'WebClient'中加载它,使用'Deployment.Current.Dispatcher.BeginInvoke',并在所有事情结束时设置重置事件,并且图像的宽度/高度仍为零当我来保存它。 – Echilon 2013-03-09 17:35:05

+0

你确定这个网址是正确的吗? (以jpeg或png或类似的方式结束),并且当您将网址放入Google Chrome时(就像您使用其他浏览器一样),它会显示一张图片。除此之外,如果没有诚实的代码,很难看到发生了什么。 @Echilon – GangstaGraham 2013-03-09 17:38:33

回答

-1

退房SimpleImage.Resizer

该来源可在github

如果您想要看到它的作用,作者还设置了demo on apphb

+0

作者想要做什么的矫枉过正。 – 2013-03-09 18:41:08

+0

@DenDelimarsky - 作者已经指出[ImageTools](http://blogs.technet.com/b/heyscriptingguy/)。恕我直言,我给出的链接提供了一个更简单的选项。但看着MediaLibrary,我觉得它是一个更简单的选择。谢谢。 – 2013-03-10 01:26:09

0

您使用的是WebClientWebRequest此刻?

MediaLibrary.SavePicture也可能工作

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.medialibrary.aspx

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.medialibrary.savepicture.aspx

这也是官方微软库,所以他们可能比外部库更好。

调整大小,你可能有兴趣在检查出强烈建议http://www.leadtools.com/sdk/silverlight/windows-phone.htm

您还可能有兴趣这篇文章从微软博客中:http://blogs.msdn.com/b/mikeormond/archive/2010/12/09/resizing-images-in-windows-phone-7.aspx

+0

谢谢。目前我已经尝试过使用'WebClient'并使用'OpenReadAsync'。 MediaLibrary.SavePicture看起来不错,但不会改变大小,所以我仍然坚持我的第一个问题。 – Echilon 2013-03-09 17:38:19

+0

@Echilon你应该检查我的更新答案,我想你可能会发现这篇文章很有用。请注意,并检查标记,以防它可以帮助你。 – GangstaGraham 2013-03-09 17:51:34

0

要下载并存储图像,您需要做到这一点:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://i.imgur.com/IgomXCN.jpg"); 

request.BeginGetResponse(new AsyncCallback((result) => 
    { 
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); 
     byte[] content = ReadFully(response.GetResponseStream()); 

     MediaLibrary lib = new MediaLibrary(); 
     lib.SavePictureToCameraRoll("Test Picture", content); 
    }), null); 

的readFully是乔恩斯基特here记录功能和用于将流转换为一个字节数组。 MediaLibraryMicrosoft.Xna.Framework程序集的一部分,如其他解答之一所述。