прохождение правильного кроварка на память поставки для изображения
-
13-09-2020 - |
Вопрос
Есть способ определить, что я передаю правый байтовый массив в MemoryStream, если я хочу создать изображение из массива байтов.
MemoryStream mStream = new MemoryStream();
mStream.Write(byteArray, 0, byteArray.Lenth);
Image imgObj = Image.FromStream(mStream);
.
Как я могу, если это возможно исправить bytearray, что это действительный ByteAray для изображения?
Решение 4
Вот ответ Обработка изображений для манекенов с C # и GDI +
<Сильные> ОТ: Я не знаю, как поставить ссылки на комментарии, поэтому я положил его в ответы.
Другие советы
Это действительно зловещий вопрос, наверняка вы должны знать, откуда вы читаете ваши данные?Когда вы создаете изображение с помощью Image.FromStream
, будет брошен генеракодицетагкод, если он не может распознать формат.Почему вы не используете этот механизм для идентификации неверного потока данных, а не восстанавливают колесо?
Я сделал немного программных манипуляций изображений.То, что вы захотите сделать, это найти спецификацию для формата изображения, который вы изменяете, и убедитесь, что вы должны делать все, что вы должны.Например, файлы PNG разбиваются и имеют контрольные суммы на каждом разделе, поэтому, если вы измените что-то в этом чане, вы должны пересчитать контрольную сумму в конце раздела.
После прочтения ваших вопросов и ваших комментариев, я думаю, что вы пытаетесь манипулировать изображением, манипулируя массивом байтов, прежде чем положить его в класс изображения.И теперь вы утверждаете, что ваш байтовый массив поврежден для этого формата изображения и как вы его можете исправить.
Так что ответ на этот вопрос будет: вы повредите его, вы исправите это.
Но чтобы по-настоящему решить вашу проблему, если ваша цель - манипулировать самим изображением, просто загрузите его в промежуточный генеракодицетагкод и используйте Image
класс для манипулирования картинкой.После этого поместите результат в реальное объект Image .Готовы, без каких-либо хлопот о работе на байтовом массиве.