QPixmap
用于处理像素图的类,专门为在屏幕上显示图像而优化。
可以高效地处理大图像,并且与Qt的窗口系统紧密集成。
提供了快速的像素访问和绘制操作,可以直接被绘制到任何QPaintDevice派生的对象上,如QWidget和QGraphicsItem。
针对屏幕渲染进行了优化,因此当需要频繁在屏幕上绘制图像时,使用QPixmap是最佳选择。
QImage
用于处理图像数据的类,提供了对图像像素的直接访问。
支持常见的图像格式,如PNG、JPEG和BMP。
适用于图像处理和图像编辑,因为它允许对单个像素进行操作。
还支持图像的转换、缩放和镜像等操作。
与平台无关,不依赖于屏幕分辨率,因此在处理图像时,QImage可以提供更精确的像素控制。
简单来说技术QPixmap用来显示图片,QImage用来读取、处理图片
QImage转换为QPixmap
QImage image;
if (image.load("path/to/image.png")) {
QPixmap pixmap = QPixmap::fromImage(image);
// 现在可以使用pixmap在屏幕上显示图像
}
QPixmap转换为QImage
QPixmap pixmap;
if (pixmap.load("path/to/pixmap.bmp")) {
QImage image = pixmap.toImage();
// 现在可以使用image进行图像处理操作
}
在实际应用中,QImage和QPixmap通常一起使用,以充分利用它们各自的优势。例如,可以先使用QImage加载和处理图像,然后将处理后的图像转换为QPixmap,以便在屏幕上高效地显示。
QImage image;
if (image.load("path/to/image.png")) {
// 对图像进行处理,例如缩放或灰度化
image = image.scaled(QSize(200, 200)); // 缩放图像
// 将处理后的QImage转换为QPixmap
QPixmap pixmap = QPixmap::fromImage(image);
// 在QLabel中显示QPixmap
ui->label->setPixmap(pixmap);
}