Qt/C++-转换原始二进制数据并将其显示为图像(即QImage)
Qt / C++ - Converting raw binary data and display it as an image (i.e. QImage)
我有一个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会为你处理一切。
希望能有所帮助!
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- 我在 OpenGL 中显示图像时遇到问题
- C++ 窗口显示无框图像
- 裁剪并显示我从哈尔级联获得的图像
- 如何显示具有 opengl 纹理的灰度图像
- 使用 Splashkit 逐个显示多个C++图像
- 如何使用OpenCV同时显示"深度"和"颜色"视频图像
- 如何从amd gpus的显示输出中获取图像数据
- Qt-png图像未显示在部署应用程序中
- 无法在 Opencv 中显示图像导致内存位置
- 只有左侧图像显示在OpenGL Stereo上
- gstreamer 管道代码,用于通过来自相机的实时流式传输而不是图像显示文本
- wxnotebook动态图像显示
- OpenCV-关闭图像显示窗口
- Qt拖放-改变图像显示,而拖动
- 为什么从Project Tango Tablet中提取的图像显示为灰色
- 如果同时运行两次wkhtmltopdf库,为什么它只会发生数据文档,而没有任何表或图像显示在html文件中
- 如何在win32中刷新图像显示白色,保持文字不变