передача правильного BytesArray в MemoryStream для изображения - PullRequest
0 голосов
/ 09 июля 2010

есть способ определить, что я передаю правильный байтовый массив в MemoryStream, если я хочу создать образ из байтового массива.

MemoryStream mStream = new MemoryStream();
mStream.Write(byteArray, 0, byteArray.Lenth);
Image imgObj = Image.FromStream(mStream);

Как я могу, если возможно Исправить byteArray, что это действительный byteArray для изображения?

Ответы [ 4 ]

0 голосов
/ 09 июля 2010

вот ответ Обработка изображений для чайников с C # и GDI +

OT: Я не знаю, как разместить ссылки на комментарии, поэтому я добавил их в ответы.

0 голосов
/ 09 июля 2010

Я сам немного занимался программированием изображений. Что вам нужно сделать, так это найти спецификацию изменяемого формата изображения и убедиться, что вы делаете все, что должны. Например, файлы png разбиты на части и имеют контрольные суммы в каждом разделе, поэтому, если вы что-то изменяете в этом чанке, вы должны пересчитать контрольную сумму в конце раздела.

0 голосов
/ 09 июля 2010

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

Таким образом, ответ на этот вопрос будет следующим: вы испортили его, вы исправите его.

Но чтобы действительно решить вашу проблему, если ваша цель - манипулировать самим изображением, просто загрузите его в промежуточные значения Image и используйте класс Graphics для управления вашим изображением. Затем поместите результат в настоящий объект изображения, который вам нравится. Готов, без каких-либо хлопот по работе с байтовым массивом.

0 голосов
/ 09 июля 2010

Это действительно зловещий вопрос, наверняка вы должны знать, откуда вы читаете свои данные? Когда вы создаете изображение, используя Image.FromStream, будет выброшено ArgumentException, если он не сможет распознать формат. Почему бы вам не использовать этот механизм для определения неверного потока данных, а не заново изобретать колесо?

...