Qt|QLabel显示刷新图像数据

参考:QImage、QClipboard(https://zhuanlan.zhihu.com/p/649611141)

获取图像数据并转换为QImage

unsigned char *data = 图像数据;
QImage show_image_ = QImage(data, imgInfo.width, imgInfo.height, imgInfo.width,
QImage::Format_Grayscale8).copy();

刷新图像到QLabel
注:提前定义QPixmap会导致内存泄漏,在setPixmap时直接转换Image到qpixmap;
QLabel刷新效率有限,刷新过快可能导致内存增长,界面卡顿问题;
多线程要自定义信号槽控制ui控件,直接操作ui控件大概率崩溃;

Qt::IgnoreAspectRatio 不考虑图片比例,直接缩放到指定大小
Qt::KeepAspectRatio 保持图片比例,缩放到指定大小内的最大矩形
Qt::KeepAspectRatioByExpanding 保持图片比例,缩放到超出指定大小的最小矩形

Qt::FastTransformation:转换快速执行,没有平滑。
Qt::SmoothTransformation:使用双线性过滤转换生成的图像。

 ui.LabelImage->clear();
 ui.LabelImage->setPixmap(QPixmap::fromImage(show_image_.Image).scaled(ui.LabelImage->size(),
		 	Qt::KeepAspectRatio, Qt::FastTransformation));
 //不停地处理事件,让程序保持响应,解决界面卡顿问题,根据需求添加
 QCoreApplication::processEvents(); 

也可以通过QImage对象缩放图像

QImage scal = show_image_ .scaled(900, 800, Qt::KeepAspectRatio);	// 保持图像的长宽比例不变

你可能感兴趣的:(C/C++/qt,QT,qt,开发语言)