2012-06-20 104 views
0

我试图从URL中获取图像并将其保存到独立存储中,并从孤立存储中获取它并将其显示在我的WP-7应用程序中。保存和从孤立存储中检索图像时出错

这里是初步认识代码:

public void GetImages() 
{ 
    string uri = "http://sherutnetphpapi.cloudapp.net/mini_logos/" + path; 
    WebClient m_webClient = new WebClient(); 
    imageUri = new Uri(uri); 

    m_webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_ImageOpenReadCompleted); 
    m_webClient.OpenReadAsync(imageUri); 
} 

void webClient_ImageOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{ 

    Stream stream = e.Result; 
    using (IsolatedStorageFile myIsf = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     IsolatedStorageFileStream fileStream = myIsf.CreateFile(path); 
     StreamResourceInfo sri = null; 
     sri = Application.GetResourceStream(imageUri); 

     BitmapImage bitmap = new BitmapImage(); 
     bitmap.SetSource(sri.Stream); 
     WriteableBitmap wb = new WriteableBitmap(bitmap); 

     // Encode WriteableBitmap object to a JPEG stream. 

     System.Windows.Media.Imaging.Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85); 
     fileStream.Close(); 
    } 
} 

的问题是在这条线:sri = Application.GetResourceStream(imageUri); 我得到这个方法GetResourceStream()预期相对开放的一个例外,发现绝对的。

我不明白该怎么给这种方法,而不是imageUri

在此先感谢!

+0

我真的不知道我是什么新手在这个网站上。我会很高兴,如果你可以向我解释这个比率 – thechmodmaster

+0

双。我想我明白了.....谢谢 – thechmodmaster

+1

当人们提供有用的答案,他们得票。当答案没有帮助时,他们会得到反对票。无论您觉得最有帮助或最准确的答案,您都需要接受它作为“正确答案”。 –

回答

2

我认为这可能是你需要的。

public void GetImages() 
{ 
    string uri = "http://sherutnetphpapi.cloudapp.net/mini_logos/" + path;  
    WebClient m_webClient = new WebClient(); 
    imageUri = new Uri(uri); 
    m_webClient.OpenReadAsync(imageUri); 
    m_webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_ImageOpenReadCompleted); 
    m_webClient.AllowReadStreamBuffering = true; 

} 


void webClient_ImageOpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
{   
    var isolatedfile = IsolatedStorageFile.GetUserStoreForApplication(); 
    using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(path, System.IO.FileMode.Create, isolatedfile)) 
    { 
     byte[] buffer = new byte[e.Result.Length]; 
     while (e.Result.Read(buffer, 0, buffer.Length) > 0) 
     { 
      stream.Write(buffer, 0, buffer.Length); 
     } 
    } 
} 
+0

我试过,但我得到一个错误:“无法从字符串转换为system.uri” – thechmodmaster

+0

是的,但我不知道什么文件路径给它 – thechmodmaster

+0

我想我发现了什么是错的。现在就试试。 –

0

什么做到这一点path包含,因为如果它包含一个相对URL,然后从路径中删除/。由于您在uri结束时已经有/

+0

路径包含company.png的名称,例如:cnn.png – thechmodmaster