Импортировать изображение и сохранить в изолированном хранилище WP7 - PullRequest
2 голосов
/ 30 сентября 2011

В настоящее время я работаю над проектом, в котором пользователь должен выбрать изображение из своей фотогалереи и импортировать его. Используя следующий код, я могу импортировать картинку, но у меня есть несколько вопросов.

  1. Как называется изображение при импорте?
  2. Где находится изображение после импорта
  3. Можно ли сохранить это изображение и перезагрузить его при повторном открытии приложения (т. Е. С использованием изолированного хранилища)

Вот код из учебника

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System.IO;
using System.Windows.Media.Imaging;

namespace PhoneApp4
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }
        PhotoChooserTask selectphoto = null;
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            selectphoto = new PhotoChooserTask();
            selectphoto.Completed += new EventHandler<PhotoResult>(selectphoto_Completed);
            selectphoto.Show();

        }

        void selectphoto_Completed(object sender, PhotoResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {

                BinaryReader reader = new BinaryReader(e.ChosenPhoto);
                image1.Source = new BitmapImage(new Uri(e.OriginalFileName));

            }
        }
    }
}

1 Ответ

2 голосов
/ 02 октября 2011
  1. PhotoResult содержит OriginalFileName.
  2. Когда PhotoChoserTask завершает PhotoResult.ChosenPhoto предоставляет вам поток данных для фотографии.
  3. Да, в этот момент вы можетесохранить изображение в изолированном хранилище.

      private void Pick_Click(object sender, RoutedEventArgs e)
      {
           var pc = new PhotoChooserTask();
           pc.Completed += pc_Completed;
           pc.Show();
      } 
    
        void pc_Completed(object sender, PhotoResult e)
        {
            var originalFilename = Path.GetFileName(e.OriginalFileName);
            SaveImage(e.ChosenPhoto, originalFilename, 0, 100);
        }
    
        public static void SaveImage(Stream imageStream, string fileName, int orientation, int quality)
        {
            using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (isolatedStorage.FileExists(fileName))
                    isolatedStorage.DeleteFile(fileName);
    
                var fileStream = isolatedStorage.CreateFile(fileName);
                var bitmap = new BitmapImage();
                bitmap.SetSource(imageStream);
    
                var wb = new WriteableBitmap(bitmap);
                wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, orientation, quality);
                fileStream.Close();
            }
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...