Как загрузить изображения (jpg) через веб-клиента и сохранить в изолированном хранилище на Windows Phone 7? - PullRequest
5 голосов
/ 10 октября 2011

Из-за отсутствия опыта программирования (3 месяца) я не смог воссоздать найденные примеры из приведенного выше вопроса. Примеры, которые я нашел, касаются не WP7 Silverlight, сохранения изображений с камеры, были сложными для моих нужд или просто не работали. Мне удалось загрузить текстовый файл с помощью экземпляра Webclient и сохранить его в изолированном хранилище с помощью StreamWriter. Мне нужно выполнить ту же задачу с изображениями JPG. Ниже приведено то, что я использовал для загрузки текстового файла.

=============================================== ================================

 IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication();


    private void GetTextFile()
        {
            WebClient client = new WebClient();
            client.DownloadStringCompleted += new     DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
            client.DownloadStringAsync(new Uri("http://mywebsite.com/textfile.txt"));
        }

    private void client_DownloadStringCompleted(object sender,     DownloadStringCompletedEventArgs e)
        {
            StreamWriter MyStreamWriter = new StreamWriter(new     IsolatedStorageFileStream("textfile.txt", FileMode.Create, MyStore));
            MyStreamWriter.WriteLine(e.result)
            MyStreamWriter.Close();
    }

=============================================== ================================

Я удалил несколько строк, используемых для обработки ошибок и т. Д., Чтобы сделать его максимально простым.

Может кто-нибудь изменить вышеперечисленное, чтобы я мог скачать и сохранить jpg?

Пожалуйста, держите это как можно проще, поскольку я легко запутался.

Спасибо, что уделили время заранее!

РЕШЕНО! ============================================= ==================================

Мне удалось заставить его работать, используя информацию с этого сайта ниже. http://dotnet.dzone.com/articles/operating-image-files-windows

Надеюсь, это поможет другим разочарованным новичкам в будущем!

IsolatedStorageFile MyStore = IsolatedStorageFile.GetUserStoreForApplication();

private void GetImageFile()
{
        WebClient client = new WebClient();
        client.OpenReadCompleted += new     OpenReadCompletedEventHandler(client_OpenReadCompleted);
        client.OpenReadAsync(new Uri("http://mywebsite.com/1.jpg"), client);
    }


void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
     var resInfo = new StreamResourceInfo(e.Result, null);
 var reader = new StreamReader(resInfo.Stream);
 byte[] contents;
     using (BinaryReader bReader = new BinaryReader(reader.BaseStream))
    {
     contents = bReader.ReadBytes((int)reader.BaseStream.Length);
    }
     IsolatedStorageFileStream stream = MyStore.CreateFile("10.jpg");
 stream.Write(contents, 0, contents.Length);
 stream.Close();
}

1 Ответ

4 голосов
/ 11 октября 2011

Попробуйте это, Может быть, полезно для вас,

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    HttpWebRequest reqest1 = (HttpWebRequest)WebRequest.Create(url);
    reqest1.BeginGetResponse(DownloadImageCallback, reqest1);
    Thread.Sleep(1000);
}

void DownloadImageCallback(IAsyncResult result)
{

    HttpWebRequest req1 = (HttpWebRequest)result.AsyncState;
    HttpWebResponse responce = (HttpWebResponse)req1.EndGetResponse(result);
    Stream s = responce.GetResponseStream();
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        string directory = "Images";
        if (!myStore.DirectoryExists(directory))
        {
            myStore.CreateDirectory(directory);
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var isoFileStream = myIsolatedStorage.CreateFile(directory + "//yourfilename.jpg"))
                {
                    var wb = new WriteableBitmap(bitimage);
                    var width = wb.PixelWidth;
                    var height = wb.PixelHeight;
                    Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100);
                }
            }
        }
        else
        {
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (myIsolatedStorage.FileExists(directory + "//yourfilename.jpg"))
                {
                    myIsolatedStorage.DeleteFile(directory + "//yourfilename.jpg");
                }

                using (var isoFileStream = myIsolatedStorage.CreateFile(directory + "//yourfilename.jpg"))
                {
                    var wb = new WriteableBitmap(bitimage);
                    var width = wb.PixelWidth;
                    var height = wb.PixelHeight;
                    Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100);
                }
            }
        }
    });
}
...