我有两张照片。我需要超级强加/重叠图像。第一个图像或基本图像的大小为160x128,第二个图像为120x100。我如何相互重叠?
这是我的代码,我把它作为参考:
#include "mainwindow.h"
#include <QApplication>
#include "mainwindow.h"
#include <QPixmap>
#include <QFile>
#include <QLabel>
#include <QPainter>
QLabel *lbl= NULL ;
QImage baseImage("/usr/image1.jpg");
QImage overlayLogoff("/usr/image2.jpg");
QImage createImageWithOverlay(const QImage& baseImage, const QImage& overlayImage)
{
QImage imageWithOverlay = QImage(baseImage.size(), QImage::Format_RGB16);
QPainter painter(&imageWithOverlay);
painter.setCompositionMode(QPainter::CompositionMode_Source);
painter.fillRect(imageWithOverlay.rect(), Qt::transparent);
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawImage(0, 0, baseImage);
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.drawImage(0, 0, overlayImage);
painter.end();
return imageWithOverlay;
}
QImage logoffImage = createImageWithOverlay(baseImage, overlayLogoff);
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
lbl = new QLabel();
createImageWithOverlay(baseImage, overlayLogoff);
return a.exec();
}
这里我无法获得任何图像?我是否需要使用show功能来显示图像。
请帮忙。谢谢
答案 0 :(得分:0)
查看您的代码,我想您正在尝试在QLabel中显示合成图像。
但是要使此代码起作用,合成图像必须附加到QLabel,并且必须使QLabel本身可见:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel * lbl = new QLabel();
QImage composite = createImageWithOverlay(baseImage, overlayLogoff);
lbl->setPixmap(QPixmap::fromImage(composite));
lbl->show();
return a.exec();
}
PS:你应该尽量避免在全局范围内定义变量。