1、概述
QImage是Qt框架中用于处理图像数据的一个核心类。与QPixmap不同,QImage是在内存中直接存储图像像素数据的,这使得它适用于需要直接访问和修改像素的应用场景,比如图像处理算法、图像绘制以及图像分析等。QImage支持多种图像格式,包括RGB、ARGB、灰度图等,并提供了丰富的API来进行图像的加载、保存、转换和绘制。
2、重要方法
- QImage(int width, int height, QImage::Format format):构造一个指定宽度、高度和格式的空图像。
- load(const QString &fileName, const QString &format = QString()):从文件中加载图像。
- save(const QString &fileName, const QString &format = QString(), int quality = -1):将图像保存到文件中。
- convertToFormat(QImage::Format format):将QImage转换为指定的格式。
- pixel(int x, int y):返回图像中指定位置的像素值。
- setPixel(int x, int y, uint color):设置图像中指定位置的像素值。
- scanLine(int y):返回指向图像中指定行的扫描线的指针。
- bits():返回指向图像数据的指针。
- byteCount():返回图像数据的字节数。
- copy(const QRect &rect = QRect()) const:复制图像的指定区域。
- scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation):按指定大小和纵横比缩放图像。
// 加载图像
QImage image(":/res/c.png");
if (image.isNull()) {
qWarning() << "Failed to load image.";
return -1;
}
// 获取图像的宽度和高度
int width = image.width();
int height = image.height();
// 修改图像中的像素值(例如,将每个像素的红色分量增加50)
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
QColor color = image.pixelColor(x, y);
int red = qBound(0, color.red() + 50, 255); // 确保红色分量在0到255之间
QColor newColor(red, color.green(), color.blue(), color.alpha());
image.setPixelColor(x, y, newColor);
}
}
// 保存修改后的图像
bool saved = image.save("1.png");
if (!saved) {
qWarning() << "Failed to save modified image.";
} else {
qDebug() << "Modified image saved successfully.";
}
觉得有帮助的话,打赏一下呗。。