参考: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); // 保持图像的长宽比例不变