我有序列化/反序列化位图对象的代码。对于某些图像文件(尤其是png文件),我发现反序列化后文件的大小减小了,图像质量降低了。而且,如果我再次对反序列化的图像进行序列化,则结果字节数组将与之前的数组不同。有没有人遇到过同样的问题?如果是这样,您如何解决呢?
这是我的代码段:
private byte[] GetBytes(Bitmap image)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
formatter.Serialize(ms, image);
byte[] _bytes = ms.ToArray();
return _bytes;
}
}
private Bitmap GetImage(byte[] _bytes)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(_bytes))
{
Bitmap bmp = (Bitmap)formatter.Deserialize(ms);
return bmp;
}
}
PS:使用 Image 对象而不是 Bitmap 似乎可以解决问题,但是我宁愿不更改对象类型到外部依赖项。