qt QImage详解

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.";
}

qt QImage详解

觉得有帮助的话,打赏一下呗。。

           

版权声明:如无特殊标注,文章均来自网络,本站编辑整理,转载时请以链接形式注明文章出处,请自行分辨。

本文链接:https://www.shbk5.com/dnsj/73336.html