qt中,图片自适应QLabel显示
程序员文章站
2024-01-19 12:37:10
...
无自适应,直接显示
//将图片格式转换成QImage格式,否则不能再lable上显示
// QImage imag; //声明QImage对象
imag = QImage((const unsigned char *)(matData.data),
// a 这表示直接将图片裁剪成label大小,无法实现图片自适应显示
ui->picture->width(),
ui->picture->height(),
static_cast<int>(matData.step),
//图像格式:QImage::Format_RGB32 ,QImage::Format_RGB888,QImage::Format_Indexed8
QImage::Format_RGB888);
//b 对应a,要用这种方式来显示 QImage-->QPixmap
ui->picture->setPixmap(QPixmap::fromImage(imag));
自适应显示
//将图片格式转换成QImage格式,否则不能再lable上显示
// QImage imag; //声明QImage对象
imag = QImage((const unsigned char *)(matData.data),
/*a/ 这表示直接将图片裁剪成label大小,无法实现图片自适应显示
ui->picture->width(),
ui->picture->height(), */
/* 为实现图片可以自适应显示在label上:
* 1/将mat格式的图片转换成Qimage格式,图片大小就是原图的大小(mat的大小) */
matData.cols,
matData.rows,
static_cast<int>(matData.step),
//图像格式:QImage::Format_RGB32 ,QImage::Format_RGB888,QImage::Format_Indexed8
QImage::Format_RGB888);
//2 将Qimage格式的图片转成Qpixmap格式
QPixmap pix = QPixmap::fromImage(imag);
//3 设置pixmap缩放的尺寸
pix.scaled(ui->picture->size(), Qt::KeepAspectRatio);
/*4 它的作用是设置label的属性scaledContents,
这个属性的作用是允许(禁止)label缩放它的内容充满整个可用的空间。
特别说明的一点是当使能该属性并且label显示pixmap时,它能够缩放pixmap充满整个可用的空间。*/
ui->picture->setScaledContents(true);
//5 用label显示一张图片
ui->picture->setPixmap(pix);
扩展:QT图片格式转换(QImage和QPixmap、QImage和Mat互转)
1 QPixmap-->QImage:
QPixmap pix(path);
QImage img = pix.toImage();
2 QImage-->QPixmap:
QImage img(path);
QPixmap pix = QPixmap::fromImage(img);
3 QImage-->Mat:
cv::Mat mat;
mat = cv::Mat(image.height(), image.width(), CV_8UC4, (void*)image.constBits(), image.bytesPerLine())
4 Mat-->QImage:
QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);
上一篇: pytorch导出onnx模型支持动态图
下一篇: WPF 动态图的插入方法