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