Member 14106234 Ответов: 2

[C] как преобразовать изображение в байтовый массив


Всем привет,

Может ли кто - нибудь предложить, как мы можем преобразовать изображение в массив байтов и наоборот ?

Я разрабатываю TCP-сервер и хочу передать картинку, но, думаю, мы должны преобразовать ее в байтовый массив.

Заранее спасибо.

Что я уже пробовал:

Я искал в Google, но нашел только ответ на языке C#

Rick York

Сначала вам нужно определить, в какой форме находятся данные изображения. Это записано в досье? Это пиксели в окне? и т.д...

Это важно, потому что ответ зависит от того, в какой форме находятся данные.

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

2 Ответов

Рейтинг:
2

KarstenK

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

Моя любимая статья по обработке изображений-легендарная CXImage. Он обрабатывает много материалов для обработки изображений.

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


RedDk

Имейте в виду, что предоставленная ссылка является ссылкой CP на его статью. Серьезное количество пробирания через раздел комментариев требуется, чтобы демаскировать сапоги несоответствия версии компиляции ... так что переход к погоне (возможно) смотрите здесь: https://sourceforge.net/projects/cximage/ для скачивания.

Рейтинг:
15

OriginalGriff

Изображение-это массив байтов в его самом фундаментальном виде: если оно хранится в файле (а для языка Си это почти наверняка так и будет), то просто считайте файл как двоичные данные и передавайте его по обычному каналу передачи данных.

Помните, что "изображение" - это описание класса-фактическое содержание данных зависит именно от того, какой это тип изображения: BMP будет отличаться от PNG, который очень отличается от JPG, который совсем не похож на TIF, который ... вы поняли идею.

Если вы не просто читаете его и отправляете, то вам нужно найти механизм для чтения файла, преобразования его в "общий формат" и отправки его - что потребует тщательного обдумывания, потому что некоторые форматы несжаты (например, BMP), поэтому время передачи вполне может быть значительным; в то время как другие используют метод сжатия с потерями (например, JPG), поэтому качество изображения вполне может быть значительно ухудшено.

- Я? Я бы отправил его как "необработанные двоичные данные" вместе с именем файла, которое указывало, какой тип данных он содержит.