序列化/反序列化位图会导致图像改变

时间:2019-02-27 09:34:55

标签: c# .net serialization bitmap deserialization

我有序列化/反序列化位图对象的代码。对于某些图像文件(尤其是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 似乎可以解决问题,但是我宁愿不更改对象类型到外部依赖项。

0 个答案:

没有答案