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

时间:2012-03-21 02:33:59

标签: c++ qt image-processing qimage glreadpixels

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

QImage有nice constructor,它包含现有缓冲区,宽度,高度和pixel format。这似乎是一个很好的起点。

如果您在服务器上创建QImage,您可以使用Qt's built-in streaming向您的客户端发送QImage(QDataStreams可以包装任何IO设备,包括网络套接字),因此无需执行任何操作自己编码和解码 - Qt将为您处理一切。

希望有所帮助!