参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。具体的步骤为:先打开一个图像;将图像文件加载进QImage对象中;再用QPixmap对象获得图像;最后用QLabel选择一个QPixmap图像对象显示。
第一步:在UI界面添加一个Label控件,对象名为label
-
QString filename(“C:\\SensorsData\\BASLER\\code\\opencv\\vehicle.jpg”);
-
QImage* img=
new QImage;
-
if(! ( img->load(filename) ) )
//加载图像
-
{
-
QMessageBox::information(
this,
-
tr(
"打开图像失败"),
-
tr(
"打开图像失败!"));
-
delete img;
-
return;
-
}
-
ui->label->setPixmap(QPixmap::fromImage(*img));
上述路径为图片的路径,执行程序后,发现label只显示了图片的一小部分,因此需要修改label的大小
第二步:修改label的大小
Qlable设置大小的函数有resize(),所以在添加图片前加上这行代码可以先调整好label的大小。
ui->label->resize(img->width(),img->height());
但是运行后发现图片过大,label可能会超过设置的窗口的大小,还是不能完全显示,需要找到其它合适的方法。label的大小范围是固定的,所以应该按照比例缩放图片的大小,采用如下的方法。
第三步:按比例缩放图片大小
首先设置label的位置和大小
label->setGeometry(0,0,400,300);//前两个参数表示label左上角位置后面分别是宽和高
接着根据图片的大小缩放到合适的大小显示,图片缩放的相关函数是
img->scaled(width,height,Qt::KeepAspectRatio);
该函数前两个参数表示的是缩放之后图片的宽高,而第三个参数的作用是选择模式是否保持长宽比,下面是完整的构建函数的代码
-
{
-
ui->setupUi(
this);
-
QString StrWidth,StrHeigth;
-
QString filename=
"F:\\Study\\junior\\Qt\\door\\1.jpg";
-
QImage* img=
new QImage,* scaledimg=
new QImage;
//分别保存原图和缩放之后的图片
-
if(! ( img->load(filename) ) )
//加载图像
-
{
-
QMessageBox::information(
this,
-
tr(
"打开图像失败"),
-
tr(
"打开图像失败!"));
-
delete img;
-
return;
-
}
-
int Owidth=img->width(),Oheight=img->height();
-
int Fwidth,Fheight;
//缩放后的图片大小
-
ui->label->setGeometry(
0,
0,
400,
300);
-
int Mul;
//记录图片与label大小的比例,用于缩放图片
-
if(Owidth/
400>=Oheight/
300)
-
Mul=Owidth/
400;
-
else
-
Mul=Oheight/
300;
-
Fwidth=Owidth/Mul;
-
Fheight=Oheight/Mul;
-
*scaledimg=img->scaled(Fwidth,Fheight,Qt::KeepAspectRatio);
-
ui->label_text->setText(QString(
"width: ")+StrWidth.setNum(Fwidth)
-
+QString(
"\nheight: ")+StrHeigth.setNum(Fheight));
-
ui->label->setPixmap(QPixmap::fromImage(*scaledimg));
-
}