none
Передать BitmapImage и данные с сервера на клиент. RRS feed

  • Вопрос

  • Здравствуйте. Я делаю запрос на сервер, на который тот должен передать несколько строковых параметров и BitmapImage.

    Попытался пока организовать передачу только BitmapImage вот какую ошибку выдаёт:

    "Инициализация рисунка BitmapImage не завершена. Чтобы завершить инициализацию, вызовите метод EndInit."

    Вот код:

     

    ... BitmapImage _logo = ImageLoad(imageURL);

                       
                        MemoryStream ms = new MemoryStream();
                        PngBitmapEncoder encoder = new PngBitmapEncoder();
                        encoder.Interlace = PngInterlaceOption.On;

                        encoder.Frames.Add(BitmapFrame.Create(_logo));//вот здесь выдаёт вышеназванную ошибку.
                        encoder.Save(ms);
                        byte[] buffer = ms.GetBuffer();
                        this.myImage = buffer as byte[]; }

     

    public BitmapImage ImageLoad(string s)
            {
                BitmapImage image = new BitmapImage();
                try
                {
                    image.BeginInit();
                    image.CacheOption = BitmapCacheOption.OnLoad;
                    image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                    image.UriSource = new Uri(s, UriKind.Relative);
                    image.EndInit();
                }
                catch
                {
                     //return DependencyProperty.UnsetValue;
                }
                return image;
            }

     

     byte[] myImage;
             public byte[] imageRes
             { get { return myImage; }

    В дальнейшем хотел организовать передачу с элементами сериализации. Создать отдельный класс SerializableData в котором буду сохранять в виде XElement два сво-ва - коллекцию строковых параметров (отдельный класс SObject) и отдельным сво-вом своё BitmapImage. Если я всё это сохраню в xml-файле, как организовать десериализацию на клиенте, чтобы отдельно вытянуть строковые данные и BitmapImage.


    29 апреля 2011 г. 8:21

Ответы

  • Здравствуйте. Что-то вы мечетесь с вопросом. Вы разобрались с передачей изображений? Ответ Антона помог? Когда и как перестал работать разбор xml файла? Пожалуйста придерживайтесь первоначального вопроса и не забывайте отмечать ответ, если он решил проблему. Спасибо.


    Для связи [mail]
    • Помечено в качестве ответа Serdceder 4 мая 2011 г. 8:32

Все ответы

  • Скорее всего произошло исключение после BeginInit, а catch все проглотил. Не стоит так жестко catch-ить. Чтобы избежать явного вызова инитов, можете передать путь в конструктор BitmapImage-а.

     

    29 апреля 2011 г. 12:00
    Отвечающий
  • Пытался делать и так, как вы предложили. Это не помогало. Сейчас вообще не получается вытянуть значения из xml-файла, ни чего не менял, раньше работало. Хотя всё вроде предельно просто.

     IEnumerable<XElement> UserList = from atd in UserXML.Element("Autotication").Elements("User")
                                                where atd.Element("Password").Value.ToString() == password &&
                                                atd.Element("Login").Value.ToString() == user
                                                select atd;
                foreach (XElement _att in UserList)//.Elements()) - если сделать выборку по элементам, то присваивает только первый в списке. Почему????
                {
                    Console.WriteLine(_att);// здесь выдаёт полную строку значений.
                    if (_att != null)
                    {
                            xEl[p] = _att;
                            p++; 
                        UserAt[t] = xEl[t].Value.ToString();
                        t++;

                        string firstName = UserAt[2];
                        string lastName = UserAt[3];
                        string imageURL = UserAt[4];

    29 апреля 2011 г. 13:44
  • Здравствуйте. Что-то вы мечетесь с вопросом. Вы разобрались с передачей изображений? Ответ Антона помог? Когда и как перестал работать разбор xml файла? Пожалуйста придерживайтесь первоначального вопроса и не забывайте отмечать ответ, если он решил проблему. Спасибо.


    Для связи [mail]
    • Помечено в качестве ответа Serdceder 4 мая 2011 г. 8:32
  • Прошу прощения за эмоции. Не было времени удалить эту тему. Ответ Антона не помог, постом выше я уже писал об этом.