来自无符号字符缓冲区的 QImage(jpg 格式)
QImage from unsigned char buffer (jpg format)
我有 unsigned char*
类型的缓冲区,我用 JPG 图像填充它。 我想使用此缓冲区在 QLabel 中将图像绘制到我的应用程序屏幕。
我已经这样做了,但图像不正确。
谁能告诉我最好的方法是什么?
QPixmap pix = QPixmap::fromImage(
QImage(buff, 460, 345, QImage::Format_RGB888)); //Not sure what format to use for a jpg image?
one_img->setPixmap(pix); //one_img is of type QLabel.
QImage::load
或QImage
构造函数希望图像缓冲区采用未压缩的格式。
如果您不打算修改映像,请使用 QPixmap
及其loadFromData()
函数:
QPixmap pix;
pix.loadFromData(buff, sizeOfBuff, "JPG");
您还可以加载带有 QImage::fromData
/QImage::loadFromData
或 QImageReader
+ QBuffer
的 Jpeg 缓冲区。
这可能与图像格式有关。这取决于将图像加载到缓冲区中的方式。 QImage
希望在提供的缓冲区中逐行查找存储的图像。
尝试Format_Indexed8
或Format_RGB32
图像格式。如果仍然不起作用,请告诉我们您如何将jpeg
图像加载到缓冲区中。
请注意,QImage
提供了一个构造函数,其中图像文件名作为参数。
正确的方法是不要将 jpg 数据解释为 RGB 格式,而是使用适当的类,例如 QImageReader,或者事件使用构造函数直接加载图像。
你说你用jpg填充缓冲区,所以你似乎已经保存了一个图像。如果是这样,最好的方法是使用:
QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
哪里:
文件名是图像的路径格式在您的情况下是"JPG"或 JPEGflags 用于指定图像是黑白还是彩色(有关详细信息,请参阅文档(
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- 询问在设计我的手臂模拟器功能表示格式1
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 如何将strftime中的格式错误作为异常捕获
- 将CHW格式的浮点向量转换为cv::Mat
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- GDI+ - 将位图像素转换为 JPG 格式
- 来自无符号字符缓冲区的 QImage(jpg 格式)
- 如何在cpp中将JPG图像转换为PGM格式