1

我有一个值类型对象,我正在尝试序列化(通过 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(在这种情况下并不理想)。我不确定还能做什么。

4

1 回答 1

0

我过去在克隆和缩略图图像时遇到过类似的情况。不幸的是,已经有几年了,我不记得细节了,但它与文件句柄和 GDI 持有它们作为该 Image 对象的源有关。

我通过从 MemoryStream 加载图像而不是从实际源流加载图像解决了这个问题。如果您的图像在文件中,请先将文件内容加载到 MemoryStream 中。然后从 MemoryStream 加载图像。

于 2009-02-03T02:49:18.257 回答