一般这样子:
// 跟随比例变化
ui->label->setScaledContents(true);
QPixmap pixmap("./01.jpg");
//pixmap.load("./01.jpg");
// 让图片大小适应控件大小, 如果不需要,可以直接显示原图
QPixmap s_img = pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->label->setPixmap(s_img);
直接显示:
//单独显示的QLabel 其大小为内容即图片的大小,若将QLabel放入QMainWindow中则QLabel的大小为其初始大小。
/*
QLabel *label=new QLabel();
QImage image("/home/ws/Pictures/cat.png");
label->setPixmap(QPixmap::fromImage(image));
label->show();
*/
图片加滚动条:
//在QMainWindow中添加一个QScrollArea,再在QScrollArea中添加QLabel
//用来滚动查看图片,
//最好用代码创建,用Qtdesigner可能无法达到目的
/*
QMainWindow mw;
QLabel *label=new QLabel();
QImage image("/home/ws/Pictures/cat.png");
label->setPixmap(QPixmap::fromImage(image));
QScrollArea *sa=new QScrollArea(&mw);
sa->setWidget(label);
sa->resize(400,400);
mw.show();
*/
图片适应QLabel的大小:
//指定QLabel的大小,并让图片自适应QLabel的大小
//scaled函数可以将图片进行缩放,第一个参数是缩放后的大小,第二个参数
//可以保持图片宽高比,在本例中label大小为400,400,宽高比为1:1,加上该参数后
//由于原图不是1:1所以在400,400的显示区域中,并不会完全填满。若不带该参数,则会拉伸图片
//并填满该区域
QMainWindow mw;
QLabel *label=new QLabel(&mw);
label->resize(400,400);
QPixmap pix("/home/ws/Pictures/cat.png");
QPixmap dest=pix.scaled(label->size(),Qt::KeepAspectRatio);
label->setPixmap(dest);
mw.show();
可以使用QImage::fromData
直接读取二进制:
QFile file("2.png"); // 实际为jpeg格式
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
qDebug() << QImage::fromData(data);
输出:QImage(QSize(1048, 1234),format=QImage::Format_RGB32,depth=32,devicePixelRatio=1,bytesPerLine=4192,sizeInBytes=5172928)
可看这篇博文:https://cloud.tencent.com/developer/article/1601595
参考:
- https://blog.csdn.net/sunatmine/article/details/109224468
- https://www.cnblogs.com/CodingUniversal/p/7500007.html