сохранить изображение в изолированном хранилище в Windows Phone 7 - PullRequest
4 голосов
/ 16 июня 2011

В основном я использую Visual Studio / Expression Blend для своего приложения. Это работает так, как если бы пользователь мог выбрать изображение, которое он / она хочет отредактировать, и после редактирования пользователю просто нужно было нажать кнопку «Сохранить», и отредактированное изображение будет сохранено в изолированном хранилище, но я просто не мог командовать кнопкой «Сохранить», чтобы сохранить изображение в изолированное хранилище, так что надеюсь, что кто-нибудь поможет мне с некоторыми примерами кодов, большое спасибо заранее.

Я попытался с кодом ниже, но когда я нажимаю кнопку сохранения, появляется нулевая ссылка. Я думаю, что когда вы нажимаете сохранить, приложение не знает, какое изображение сохранить в изолированном хранилище, и не совсем уверено, что мое мышление верно. Может кто-нибудь, пожалуйста, помогите мне с этим. Большое спасибо.

private void btnSave_Click(object sender, RoutedEventArgs e)
{
    String tempJPEG = "TempJPEG";

    var myStore = IsolatedStorageFile.GetUserStoreForApplication();
    if (myStore.FileExists(tempJPEG))
    {
        myStore.DeleteFile(tempJPEG);
    }

    IsolatedStorageFileStream myFileStream = myStore.CreateFile(tempJPEG);

    Uri uri = new Uri("TestImage.jpg", UriKind.Relative);
    StreamResourceInfo sri = Application.GetResourceStream(uri);

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

    Extensions.SaveJpeg(wb, myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
    myFileStream.Close();

1 Ответ

2 голосов
/ 16 июня 2011

Это рабочая версия кода

private void saveButtonClick(object sender, RoutedEventArgs e)
{
    try
    {
        using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (isf.FileExists("myImage.jpg"))
                isf.DeleteFile("myImage.jpg");
            using (var isfs = isf.CreateFile("myImage.jpg"))
            {
                var bmp = new WriteableBitmap(myImageElement,
                                myImageElement.RenderTransform);
                bmp.SaveJpeg(isfs, bmp.PixelWidth, bmp.PixelHeight, 0, 100);
            }
        }
    }
    catch (Exception exc)
    {
        MessageBox.Show(exc.Message);
    }
}

Здесь myImageElement - это элемент изображения, в котором вы отображаете изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...