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.

===============>>#1 票数:6 已采纳

QImage::loadQImage构造函数期望图像缓冲区处于未压缩格式。

如果您不打算修改图像,请使用QPixmap及其loadFromData()函数:

QPixmap pix;
pix.loadFromData(buff, sizeOfBuff, "JPG");

您还可以使用QImage::fromData / QImage::loadFromDataQImageReader + QBuffer加载Jpeg缓冲区。

===============>>#2 票数:0

这可能与图像格式有关。 这取决于您将图像加载到缓冲区的方式。 QImage期望在提供的缓冲区中逐行查找存储的图像。

尝试Format_Indexed8Format_RGB32图像格式。 如果它仍然无法正常工作,请告诉我们如何将jpeg图像加载到缓冲区中。

请注意, QImage提供了一个构造函数 ,其图像文件名为参数。

===============>>#3 票数:0

正确的方法是不将jpg数据解释为RGB格式,并使用适当的类,例如QImageReader ,或者事件使用构造函数直接加载图像。

===============>>#4 票数:0

你说你用jpg填充缓冲区,所以看起来你已经保存了一个图像。 如果是这样,最好的方法是使用:

QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

其中:

filename is the path to the image 
format is in your case "JPG" or JPEG 
flags  is to specify if the image is black white or color (see the documentation for details)

  ask by Tony The Lion translate from so

未解决问题?本站智能推荐:

2回复

opencv从缓冲区读取jpeg图像

我有一个包含jpeg图像数据的unsigned char*缓冲区。 我想使用c ++和opencv显示该图像。 如果我做: 我得到了一堆嘈杂的像素。 我想这是因为数据是jpeg(带有标题)。 因为这有效: 但我不能使用imdecode函数,因为它来自highgui.h
2回复

Jpeg在发行版本中使用QImage读取错误

尝试加载jpeg图像时,使用Qt和QImage的类加载方法遇到任何问题吗? 使用QtCreator在调试模式下可以完美地进行加载,但是在构建应用程序并随后以发布模式运行时尝试加载相同的jpeg图像时,加载完全失败。 我得出的结论是,我可能缺少一个特定的动态链接库,但是无法预知它将是哪个
1回复

使用Qt显示JPG图像不适用于版本可执行文件

我用qt显示jpg图像有一个恼人的问题。 我在Windows 7中使用Visual Studio 2008并使用Qt版本4.8.2。 我现在将通过使用Qt(../examples/graphicsview/collidingmice)传递的“collidingmice”示例来描述我的问题。
2回复

使用OpenCV在JPG中对图像进行编码,避免重影

我有一个应用程序(openCV-C ++) ,可从网络摄像头获取图像,将其编码为JPG,然后从服务器传输到客户端。 Thwebcam是立体声的,所以实际上我有两个图像,LEFT和RIGHT。 在客户端中,当我收到图像时,便对其进行解码,并生成Anaglyph 3D效果。 为此,我使用Ope
1回复

无法从cv :: imencode获取编码图像(弄乱了)。 如何修复.jpg的损坏保存?

所以我尝试通过cv::imencode apis将图像保存到ostream 。 从imencode得到向量。 如此处所示,它可以存储到任何ostream中。 例如std::ofstream 。 但是它无法破坏数据=( 这是我们看到的: 这是我们得到的文件: 这是我们
2回复

如何将JPEG图像加载到char数组C ++中?

我想将JPEG图像存储到普通的无符号char数组中,我曾使用ifstream来存储它; 但是,当我检查存储的数组是否正确时(通过将其再次重写为JPEG图像),使用存储的数组重写的图像无法正确显示,因此我认为问题一定会出现从我用来将图像存储到数组中的技术来看是不正确的。 我想要一个可以完美存储
3回复

在Qt中显示来自未签名字符的图像**

我正在尝试在Qt中显示图像,该图像是来自另一个函数的数据。 该函数将图像的行存储为无符号字符** 我读过某个地方,我可以某种方式将其存储为QByteArray,然后创建QPixMap,然后设置标签的QPixMap来显示它,但是我运气不高。 这就是我所拥有的: 但这似乎给
1回复

将图像缓冲区保存到Android上的文件

我有一个要保存到bmp文件的图像缓冲区。 代码本身是使用Qt在android运行的C++和app。 我可以使用任何基本功能或开放源代码库将缓冲区保存在设备上吗? 除了FreeImage之外,我在android的这个库中有一些问题。
1回复

QImage转换返回null

我有一个图像,我试图使用QImage :: transformed(const QTransform&matrix,Qt :: TransformationMode mode)const方法来变换图像的选定部分。 但是此方法返回空图像。 Qt也写到std输出: “ Qimage:内
1回复

使用QImage和QRect显示图像

我正在尝试用Qt制作游戏,但我无法加载图像。 这是窗口的构造函数。 图像没有显示出来。 我知道如何使用QLabel显示图像,但我想使用QRect功能,所以我可以移动图像。