Сериализация / десериализация битмапа приводит к изменению изображения - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть код, который сериализует / десериализует растровые объекты.Для некоторых файлов изображений (особенно файлов 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: Использование объекта Изображение вместо Растровое изображение , кажется, решает проблему, но я бы не хотел менять тип объекта из-за внешних зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...