Сериализация растрового изображения в пользовательском объекте - PullRequest
1 голос
/ 03 февраля 2009

У меня есть объект valuetype, который я пытаюсь сериализовать (через BinaryFormatter), но внутри этого объекта есть 3 битовых карты, которые при сериализации объекта генерируют «общее исключение gdi +» (нет, серьезно, это исключение ).

Крайне важно, чтобы эти растровые изображения сериализовались в файл (в отличие от простого сохранения их относительного местоположения и передачи изображений вместе с остальной частью сериализованного объекта).

Объект выглядит так:

[Serializable]
public struct MyObject
{
  public String whatever;
  // ...
  public Bitmap img1;
  public Bitmap img2;
}

и я сериализирую это так:

BinaryFormatter bFormatter = new BinaryFormatter();
fs = new FileStream(m_ContractFolder + filename + ".xtn", FileMode.OpenOrCreate);

bFormatter.Serialize(fs, contract);

Я погуглил, и большая часть того, что я нашел, это вся xmlserialization (не идеальная в этой ситуации). Я не уверен, что еще делать.

1 Ответ

0 голосов
/ 03 февраля 2009

В прошлом я сталкивался с чем-то похожим при клонировании и миниатюре изображений. К сожалению, прошло несколько лет, и я не помню подробностей, но это было связано с дескрипторами файлов и GDI, удерживающими их как источник для этого объекта Image.

Я решил проблему загрузкой изображений из MemoryStream, а не тем, что было в действительности исходным потоком. Если ваши изображения находятся в файлах, сначала загрузите содержимое файла в MemoryStream. Затем загрузите изображение из MemoryStream.

...