我只是建議「將BitMap保存到一個文件中」並僅序列化圖像文件名。
但是,如果您必須序列化位圖,只需將位圖以byte []形式保存到MemoryStream即可。
byte[] byteArray;
using (MemoryStream stream = new MemoryStream())
{
Image.Save(stream, ImageFormat.Bmp);
byteArray = stream.ToArray();
}
更新:
通過圖像路徑系列化你的形象。
private string m_imagePath;
public Image Image { get; private set; }
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
更新:
[JsonObject(MemberSerialization.OptIn)]
public class MyClass
{
private string m_imagePath;
[JsonProperty]
public string Name { get; set; }
// not serialized because mode is opt-in
public Image Image { get; private set; }
[JsonProperty]
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
}
正如你所看到的,你在這裏有一個JSON對象,具有自願加入的屬性,這意味着你需要指定哪些屬性被序列化。
此演示對象具有序列化的Name屬性,它是一個序列化的ImagePath屬性。
但是,Image屬性未被序列化。
當您反序列化對象時,圖像將加載,因爲ImagePath設置器具有所需的funcionality。
我希望這可以幫助,我測試過它,它的工作原理。
費率,如果你喜歡。祝你好運!
其實,我通過一個ListView中的綁定使用BitmapImage。林不知道它將工作,如果我保存圖像文件路徑。 – Rbeuque74
好吧,所以如圖所示將位圖序列化爲byteArray。如果您的類實現了ISerializable,請在您的GetObjectData中確保將byteArray放入info.AddValue(「BitMapByteArray」,arr) –
對不起,我沒有很好地解釋它。實際上,我在ApplicationData.LocalFolder中保存了一些圖像。我不想序列化它們,因爲它們已經在內存中。 是否可以將與本地文件路徑綁定? (我應該用file:// C:/ blabla還是隻寫C:/ blabla?) 感謝您的幫助:) –
Rbeuque74