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); I get an exception on this method GetResourceStream() Expected relative Uri, found absolute.

の代わりにこのメソッドに何を与えるべきかわかりませんimageUri

前もって感謝します!!

4

2 に答える 2

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); 
        } 
    }
}
于 2012-06-20T11:39:52.233 に答える
0

path相対 URL が含まれている場合は、/パスから削除するため、これには何が含まれますか。あなたはすでに/uriの最後にいるので。

于 2012-06-20T11:47:51.457 に答える