Qt / C ++ - преобразование необработанных двоичных данных и отображение их в виде изображения (т.е. QImage) - PullRequest
3 голосов
/ 21 марта 2012

У меня есть приложение C ++ Open GL, которое отображает анимационный экран и захватывает содержимое буфера кадра с помощью glReadPixels (), который затем сохраняется в виде 1-мерного массива.

Я могу получить содержимое буфера и сохранить его в массиве символов следующим образом:

char * values = (char *) malloc(width * height * 4 * sizeof(char));
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, values);

Затем я отправляю эти необработанные данные по сети с использованием сокета, что не является проблемой длямне.У меня есть Qt Desktop Client (который взаимодействует с приложением OpenGL с помощью сокета)

Эта клиентская программа может успешно получать необработанные двоичные данные, отправленные приложением Open GL.

Как я могу отобразить изображение из этих двоичных данных в моем клиентском приложении?Есть ли в Qt встроенная функция / библиотека для рисования изображения из двоичных данных (которое генерируется из glReadPixels)?

Нужно ли кодировать / декодировать эти необработанные двоичные данные как тип base64 перед отправкой их через сокеты?Почему или почему нет?

1 Ответ

1 голос
/ 21 марта 2012

QImage имеет хороший конструктор , который принимает существующий буфер, ширину, высоту и формат пикселей . Кажется, это отличное место для старта.

И если вы создаете QImage на сервере, вы можете использовать встроенную потоковую передачу Qt для отправки QImage вашим клиентам (QDataStreams может обернуть практически любое устройство ввода-вывода, включая сетевые сокеты), поэтому нет необходимости выполнять кодирование и декодирование самостоятельно - Qt позаботится обо всем за вас.

Надеюсь, это поможет!

...