Создание изображения из несоответствия размера потока памяти - PullRequest
1 голос
/ 30 ноября 2011

Я создаю изображение "gif" из потока памяти.У меня 43 байта памяти.Когда я создаю изображение из этого потока, я получаю 70-байтовое изображение.В чем может быть проблема?Это код, где я создаю изображение:

Bitmap httpimage2 = new Bitmap(ms, true);           // ms: 43 bytes memory stream
httpimage2.Save(@"D:\sample.gif", ImageFormat.Gif); // httpimage2: 70 bytes image

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Я не эксперт, это может быть потому, что второе изображение хранится с большей палитрой.Изображения идентичны по пикселям?

Редактировать: Обратите внимание также, что рамки могут кодировать изображение не так, как оригинал.

0 голосов
/ 30 ноября 2011

Попробуйте сохранить палитру и битыPerPixel для изображения и использовать их при создании

0 голосов
/ 30 ноября 2011

они имеют разные форматы, так почему бы они были одинакового размера?

Этот дает подробную информацию о формате BMP и указывает, что формат в памяти не будет содержать 14-Битовый заголовочный файл, который учитывает некоторые различия.

В этом содержится подробная информация о формате GIF.

В целом, можно сделать некоторые предположения относительно байтов, которые представляют изображение в памяти, поскольку вам потенциально не нужно ничего в файле, чтобы указывать что-либо о метаданных изображения, поскольку эти метаданные могут подразумеваться вкласс, который имеет байты в качестве представления.например, GIF имеет заголовок фиксированной длины, указывающий формат, 87a или 89a.Это может не потребоваться в памяти, поскольку у вас могут быть разные классы, которые содержат только байты, которые представляют изображение, один класс для изображений, которые являются 87a, и один класс для изображений, которые являются 89a.Теперь изображение в памяти может быть меньше, так как вам не нужна информация из файла о том, в каком формате он находится, так как это необходимо только при чтении файла hte и используется для выбора экземпляра класса

.они различны, для кодирования одного и того же изображения потребуется разное количество информации.

Вы можете обнаружить, что изображения больше похожи по размеру, если сохранить изображение на диск как растровое изображение, но, вероятно, они все равно будут иметь разные размеры, и если они будут одинакового размера, это будет просто совпадением.

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