目录
一、前言
本文介绍如何使用QLabel加载本地图片,将不同的图像进行拼接成一张图并保存至本地。主要用到QLabel、QPixmap、QImage、QPainter这几个类。
二、使用QLabel加载本地图片
- 工程文件夹下的image文件夹下有如下4张图。
- 使用 QLabel的setPixmap函数加载图片
- 函数原型 void setPixmap(const QPixmap &);
代码如下:
this->setFixedSize(500, 500);
//左上角
this->label1 = new QLabel(this);
this->label1->setGeometry(0, 0, 200, 200);//设置位置大小 x、y、w、h
this->label1->setPixmap(QPixmap("image/left-up.png").scaled(200, 200));
//右上角
this->label2 = new QLabel(this);
this->label2->setGeometry(300, 0, 200, 200);
this->label2->setPixmap(QPixmap("image/right-up.png").scaled(200, 200));
//左下角
this->label3 = new QLabel(this);
this->label3->setGeometry(0, 300, 200, 200);
this->label3->setPixmap(QPixmap("image/left-down.png").scaled(200, 200));
//右下角
this->label4 = new QLabel(this);
this->label4->setGeometry(300, 300, 200, 200);
this->label4->setPixmap(QPixmap("image/right-down.png").scaled(200, 200));
scaled函数的作用主要是将原图按比例缩放,此处是将原图按比例缩放成和QLabel一样大。
- 实现效果如下
三、将4张图进行拼接
- 首先准备一个空的QImage
QImage img = QImage(200 + 200, 200 + 200, QImage::Format_RGB888); //宽高为4张图拼接起来的总宽高
- 使用QPainter将每个label上的像素绘制到空的QImage上
QPainter paint(&img);
//左上角
paint.drawPixmap(0, 0,200, 200, QPixmap::fromImage(this->label1->pixmap()->toImage()));
//右上角
paint.drawPixmap(200, 0,200, 200, QPixmap::fromImage(this->label2->pixmap()->toImage()));
//左下角
paint.drawPixmap(0, 200,200, 200, QPixmap::fromImage(this->label3->pixmap()->toImage()));
//右下角
paint.drawPixmap(200, 200,200, 200, QPixmap::fromImage(this->label4->pixmap()->toImage()));
- 将绘制完QImage保存至本地
img.save("image/test.png");
- 保存后的效果
test.png为拼接完保存下来的图片。
😘The end ……🔚
原创不易,转载请标明出处。
对您有帮助的话可以一键三连,会持续更新的(嘻嘻)。