Qt/C++-转换原始二进制数据并将其显示为图像(即QImage)

Qt / C++ - Converting raw binary data and display it as an image (i.e. QImage)

本文关键字:图像 显示 QImage 转换 C++- 原始 二进制 数据 Qt      更新时间:2023-10-16

我有一个C++Open GL应用程序,它可以渲染动画显示,并使用glReadPixels()捕获帧缓冲区内容,然后将其存储为1D字符数组。

我可以获取缓冲区内容并将其保存到一个char数组中,如下所示:

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

然后,我使用套接字通过网络发送这些原始数据,这对我来说不是问题。我有一个Qt桌面客户端(使用套接字与OpenGL应用程序通信)

该客户端程序可以成功接收Open GL应用程序发送的原始二进制数据。

如何在客户端应用程序中从这些二进制数据渲染图像?Qt是否有任何内置函数/库来从二进制数据(由glReadPixels生成)中绘制图像?

在通过套接字发送这些原始二进制数据之前,我是否需要将其编码/解码为base64类型?为什么?

QImage有一个很好的构造函数,它采用现有的缓冲区、宽度、高度和像素格式。这似乎是一个很好的起点。

如果你在服务器上创建QImage,你可以使用Qt的内置流向你的客户端发送QImage(QDataStreams可以包装任何IO设备,包括网络套接字),所以不需要自己进行任何编码和解码-Qt会为你处理一切。

希望能有所帮助!