QImage类

 

QImage类提供了一个独立于硬件的图像表示,允许直接访问像素数据,并可以用作绘图设备。 


注意:这个类中的所有函数都是可重入的。

Header:#include <QImage>
CMake:find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake:QT += gui
Inherits:< QPaintDevice

详细描述>>


【公共类型】

enumFormat { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, …, Format_RGBA32FPx4_Premultiplied }共36个枚举值【>>
enumInvertMode { InvertRgb, InvertRgba }

InvertRgb反转RGB通道,alpha通道不变。

InvertRgba返回RGBA所有通道。



【公有函数 】

QImage()

构造一个空图像。

QImage(const QSize &size, QImage::Format format)

构造一个具有给定的大小和格式的图像。

QImage(int width, int height, QImage::Format format)

构造一个具有给定的宽度、高度和格式的图像。

QImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)

构造已定宽度、高度和格式的图像,使用现有内存缓冲区数据。宽度和高度必须以像素为单位指定,数据必须是32位对齐的,并且图像中的每个数据扫描线也必须是32位对齐的。

缓冲区必须在QImage和所有生命周期期间保持有效,以及未被修改或脱离原始缓冲区的副本。该图像在销毁时不会删除缓冲区。用户可以提供一个函数指针以及一个额外的清理指针,当最后一个副本被销毁时会被调用。

如果格式是索引颜色格式,图像颜色表最初为空,在使用图像之前必须使用设置setColorCount() 或setColorTable()。

QImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)

这是上面构造方式的常量版本。与使用非常量数据缓冲区的QImage构造区别在于,这个版本永远不会改变缓冲区的内容。例如,调用QImage::bits() 将返回图像的深度副本,而不是传递给构造函数的缓冲区。

QImage(uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)

构造已定宽度、高度和格式的图像,使用现有内存缓冲区数据。宽度和高度必须以像素为单位指定。字节数行指定每行的字节数(步幅)。

缓冲区必须在QImage和所有生命周期期间保持有效,以及未被修改或脱离原始缓冲区的副本。该图像在销毁时不会删除缓冲区。用户可以提供一个函数指针以及一个额外的清理指针,当最后一个副本被销毁时会被调用。

如果格式是索引颜色格式,图像颜色表最初为空,在使用图像之前必须使用设置setColorCount() 或setColorTable()。

QImage(const uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)

这是上面构造方式的常量版本。与使用非常量数据缓冲区的QImage构造区别在于,这个版本永远不会改变缓冲区的内容。例如,调用QImage::bits() 将返回图像的深度副本,而不是传递给构造函数的缓冲区。

QImage(const char *const [] xpm)

从给定的xpm图像构造一个图像。

请确保该图像是一个有效的XPM图像。错误会被悄悄地忽略。

注意,可以通过使用一个不寻常的声明来压缩XPM变量:

额外的const使整个定义只读,其效率略高一些(例如当代码在共享库中时),并且能够与应用程序一起存储在ROM中。

QImage(const QString &fileName, const char *format = nullptr)

构造一个图像,并尝试使用给定的文件名从该文件中加载该图像。

加载程序会尝试使用指定的格式读取图像。如果未指定该格式(默认),则会根据文件的后缀和标头自动检测格式。有关详细信息,请参见{QImageReader::setAutoDetectImageFormat()}{QImageReader}.

如果图像加载失败,则此对象为空图像。

文件名既可以引用磁盘上的实际文件,也可以引用应用程序的嵌入资源。

QImage(const QImage &image)

构造给定图像的一个浅层副本。

QImage(QImage &&other)

移动构造一个QImage实例,使其指向其他对象指向的同一个对象。
virtual~QImage()
bool

allGray() const

如果图像中的所有颜色都是灰色阴影,则返回true。(它们的红绿蓝分量相等);否则错误。请注意,对于没有颜色表的图像,这个函数的速度很慢。
void

applyColorTransform(const QColorTransform &transform)

将颜色变换变换应用于图像中的所有像素。
int

bitPlaneCount() const

返回图像中的位平面数。位平面数是每个像素的颜色和透明度信息的位数。

uchar *

bits()

const uchar *

bits() const

返回一个指向第一个像素数据的指针。这相当于扫描行(0)。

请注意,QImage使用了隐式数据共享。此函数执行共享像素数据的深度拷贝,从而确保此QImage是唯一使用当前返回值的数据。

qsizetype

bytesPerLine() const

返回每个图像扫描行的字节数。
qint64

cacheKey() const

返回一个标识此QImage对象的内容的数字。不同的QImage对象只有在引用相同的内容时才能具有相同的键。当图像被改变时,这个键将会改变。

QRgb

color(int i) const

返回索引i处的颜色表中的颜色。第一个颜色位于索引0处。

图像颜色表中的颜色被指定为ARGB四联体(QRgb)。使用qAlpha()、qRed()、qGreen()和qBlue() 函数来获得颜色值。

int

colorCount() const

返回图像的颜色表的大小。

注意,colorCount() 为32位图像返回0,因为这些图像不使用颜色表,而是将像素值编码为ARGB四联体。

QColorSpace

colorSpace() const

如果定义了颜色空间,则返回图像的颜色空间。
QList<QRgb>

colorTable() const

返回图像颜色表中包含的颜色列表,如果图像没有颜色表,则返回空列表。
QImage

colorTransformed(const QColorTransform &transform) const &

QImage

colorTransformed(const QColorTransform &transform) &&

返回使用对图像中所有像素的变换进行转换的图像颜色。
const uchar *

constBits() const

返回一个指向第一个像素数据的指针。

请注意,QImage使用隐式数据共享,但此函数不执行共享像素数据的深度复制,因为返回的数据是const。

const uchar *

constScanLine(int i) const

返回一个指向具有索引i的扫描线处的像素数据的指针。第一个扫描线位于索引0处。

扫描线数据至少为32位对齐。对于64位格式,它遵循64位整数的本机对齐(大多数平台是64位,i386上是32位)。

请注意,QImage使用隐式数据共享,但此函数不执行共享像素数据的深度复制,因为返回的数据是const。

void

convertTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor)

将图像转换为给定的格式。

指定的图像转换标志控制在转换过程中如何处理图像数据。

void

convertToColorSpace(const QColorSpace &colorSpace)

将图像转换为颜色空间。如果图像没有有效的颜色空间,则该方法不作用。

QImage

convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &

QImageconvertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
以给定格式format返回图像的副本。 指定的图像转换标志flags控制在转换过程中如何处理图像数据。
QImageconvertToFormat(QImage::Format format, const QList<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
使用指定的colorTable返回转换为给定格式format的图像的副本。 从RGB格式到索引格式的转换是一个缓慢的操作,将使用直接的最接近颜色的方法,没有混色。
QImageconvertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
QImageconvertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
以给定格式format返回图像的副本。 指定的图像转换标志 flags 控制在转换过程中如何处理图像数据。
QImageconvertedToColorSpace(const QColorSpace &colorSpace) const

返回转换到colorSpace色彩空间的图像。 如果图像没有有效的色彩空间,则返回一个空的QImage

QImagecopy(const QRect &rectangle = QRect()) const

以新图像的形式返回图像的rectangle子区域。

返回的图像是从该图像中的位置(rectangle.x(), rectangle.y())复制的,并且将始终具有给定矩形的大小。在此图像以外的区域,像素设置为0。对于32位RGB图像,这意味着黑色;对于32位ARGB图像,这意味着透明的黑色;对于8位图像,这意味着颜色表中索引为0的颜色可以是任何颜色;对于1位图像,这意味着Qt::color0。 如果给定的rectangle是空矩形,则复制整个图像。

QImagecopy(int x, int y, int width, int height) const
返回的图像是从该图像中的位置(x,y)复制的,并且将始终具有给定的宽度和高度。在此图像以外的区域,像素设置为0。
QImagecreateAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const

从该图像的alpha缓冲区构建并返回1-bpp蒙版。如果图像的格式为QImage::Format_RGB32,则返回空图像。 flags参数是Qt::ImageConversionFlags的按位“或”运算,控制转换过程。为标志传递0将设置所有默认选项。 返回的图像具有little-endian位顺序(即图像的格式为QImage::Format_MonoLSB),您可以使用convertToFormat()函数将其转换为big-endian(QImage::Format_Mono)。

QImagecreateHeuristicMask(bool clipTight = true) const

为此图像创建并返回1-bpp启发式掩码。

该功能的工作原理是从一个角上选择一种颜色,然后从所有边缘开始削去该颜色的像素。四个角投票决定要遮盖的颜色。如果是平局(这通常意味着该函数不适用于图像),结果是任意的。

返回的图像具有little-endian位顺序(即图像的格式为QImage::Format_MonoLSB),您可以使用 convertToFormat() 函数将其转换为big-endian(QImage::Format_Mono)。 如果clipTight 为true(默认值),则遮罩的大小刚好能够覆盖像素;否则,掩码大于数据像素。 请注意,该函数不考虑alpha缓冲区。

QImagecreateMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const
基于给定的颜色值color创建并返回此图像的蒙版。如果mode为MaskInColor(默认值),则所有匹配颜色的像素都将是遮罩中的不透明像素。如果mode为MaskOutColor,所有匹配给定颜色的像素都将是透明的。
intdepth() const
返回图像的深度。 图像深度是用于存储单个像素的位数,也称为每像素位数(bpp)。 支持的深度为1、8、16、24、32和64。
QSizeFdeviceIndependentSize() const
以独立于设备的像素返回图像的大小。 在用户界面尺寸计算中使用图像尺寸时,应使用该值。 返回值等效于 image.size() / image.devicePixelRatio()。
qrealdevicePixelRatio() const
返回图像的设备像素比率。这是设备像素device pixels 和设备无关像素device independent pixels之间的比率。 根据图像大小计算布局几何时使用此函数:QSize layoutSize = image.size() / image.devicePixelRatio()。 默认值为1.0。
intdotsPerMeterX() const
intdotsPerMeterY() const
返回物理仪表中水平/垂直适合的像素数。dotsPerMeterX()与dotsPerMeterY()一起定义了图像的预期比例和纵横比。
voidfill(uint pixelValue)
用给定的像素值pixelValue填充整个图像。 如果该图像的深度为1,则仅使用最低位。如果 fill(0), fill(2) 等,图像用0填充。如果fill(1), fill(3) 等,图像填充1。如果深度为8,则使用最低的8位;如果深度为16,则使用最低的16位。 如果图像深度高于32位,则结果不确定。
voidfill(const QColor &color)

用给定的颜色color填充整个图像。 如果图像的深度为1,则如果颜色等于Qt::color1,则图像将填充为1;否则它将被填充为0。 如果图像的深度为8,则图像将填充颜色表中对应颜色的索引(如果存在);否则它将被填充为0。

voidfill(Qt::GlobalColor color)
用给定的颜色color填充图像,描述为标准全局颜色。
QImage::Formatformat() const
返回图像的格式。
boolhasAlphaChannel() const
如果图像的格式符合alpha通道,则返回true,否则返回false。
intheight() const
返回图像的高度。
voidinvertPixels(QImage::InvertMode mode = InvertRgb)

反转图像中的所有像素值。 给定的反转模式mode只有在图像深度为32时才有意义。默认模式是InvertRgb,这将保持alpha通道不变。如果模式为InvertRgba,则alpha位也会反转。

反转8位图像意味着用颜色索引为255减去 i 的像素替换颜色索引为I的所有像素。1位图像也是如此。请注意,颜色表没有改变。 如果图像具有预乘的alpha通道,则首先将图像转换为要反转的未预乘的图像格式,然后再转换回来。

boolisGrayscale() const
对于32位图像,此函数等效于allGray()。 对于颜色索引图像,如果颜色表的所有索引的color(i)都是 QRgb(i, i, i) ,则此函数返回true否则返回false。
boolisNull() const
如果是空图像,则返回true,否则返回false。 空图像将所有参数设置为零,并且没有分配的数据。
boolload(const QString &fileName, const char *format = nullptr)
从具有给定文件名fileName的文件中加载图像。如果图像加载成功,则返回true否则使图像无效并返回false。 加载程序尝试使用指定的format格式读取图像,例如PNG或JPG。如果未指定format(默认),将根据文件的后缀和标题自动检测。有关详细信息,请参见QImageReader::setAutoDetectImageFormat()。 文件名可以引用磁盘上的实际文件,也可以引用应用程序的一个嵌入资源。有关如何在应用程序的可执行文件中嵌入图像和其他资源文件的详细信息,请参见资源系统Resource System
boolload(QIODevice *device, const char *format)
这个函数从给定的设备中读取一个QImage。例如,这可以用于将图像直接加载到QByteArray中。
boolloadFromData(QByteArrayView data, const char *format = nullptr)

从给定dataQByteArrayView数据加载图像。如果图像加载成功,则返回true否则使图像无效并返回false。 加载程序尝试使用指定的格式读取图像,例如PNG或JPG。如果没有指定format(默认),加载程序会在文件中搜索文件头以猜测文件格式。

boolloadFromData(const uchar *data, int len, const char *format = nullptr)
从给定二进制数据的第一个len字节加载图像。
boolloadFromData(const QByteArray &data, const char *format = nullptr)

从给定的QByteArray数据加载图像。

voidmirror(bool horizontal = false, bool vertical = true)
图像在水平和/或垂直方向的镜像,具体取决于“水平”和“垂直”设置为“真”还是“假”。
QImagemirrored(bool horizontal = false, bool vertical = true) const &
QImagemirrored(bool horizontal = false, bool vertical = true) &&
返回图像的镜像,在水平和/或垂直方向上镜像,具体取决于 horizontal 和 vertical 设置为true还是false。 请注意,原始图像没有改变。
QPointoffset() const
返回图像相对于其他图像定位时要偏移的像素数。
QRgbpixel(const QPoint &position) const

返回给定位置position像素的颜色。 如果位置无效,则结果未定义。

警告:当用于大量像素操作时,该函数的开销很大。当需要读取许多像素时,请使用constBits() 或constScanLine() 。

QRgbpixel(int x, int y) const
返回坐标(x,y)处像素的颜色。
QColorpixelColor(const QPoint &position) const

以QColor形式返回给定位置像素的颜色。 如果位置无效,则返回无效的QColor。

警告:当用于大量像素操作时,该函数的开销很大。当需要读取许多像素时,请使用constBits() 或constScanLine() 。

QColorpixelColor(int x, int y) const
以QColor形式返回坐标(x,y)处像素的颜色。
QPixelFormatpixelFormat() const
QPixelFormat形式返回QImage::Format
intpixelIndex(const QPoint &position) const
返回给定位置position的像素索引。 如果position位置无效,或者图像不是调色板图像( depth() > 8),则结果未定义。
intpixelIndex(int x, int y) const

返回给定位置(xy)的像素索引。 

QRectrect() const
返回图像的包围矩形 rectangle (0, 0, width(), height()) 。
boolreinterpretAsFormat(QImage::Format format)

将图像的格式更改为不更改数据的format。仅在相同深度的格式之间有效。 如果成功则返回true。 如果已知数据仅是不透明的,此函数可用于将带有alpha通道的图像更改为其相应的不透明格式,或者在用新数据覆盖之前更改给定图像缓冲区的格式。

警告:该函数不检查新格式的图像数据是否有效,如果深度兼容,仍将返回true。未定义对包含无效数据的图像的操作。

警告:如果图像未分离,这将导致数据被复制。

voidrgbSwap()
交换所有像素的红色和蓝色分量的值,有效地将RGB图像转换为BGR图像。
QImagergbSwapped() const &
QImagergbSwapped() &&
返回一个 QImage,其中所有像素的红色和蓝色分量的值都已交换,从而有效地将RGB图像转换为BGR图像。 原始图像没有改变。
boolsave(const QString &fileName, const char *format = nullptr, int quality = -1) const
使用给定的图像文件格式format和质量因子quality ,以给定的文件名fileName将图像保存到文件中。如果格式为nullptr,QImage将通过查看文件名的后缀来尝试猜测格式。 质量因子必须在0到100或-1的范围内。指定0获取小型压缩文件,指定100获取大型未压缩文件,指定-1(默认值)使用默认设置。如果图像保存成功,则返回true否则返回false。
boolsave(QIODevice *device, const char *format = nullptr, int quality = -1) const

该函数向给定设备device写入一个QImage。 例如,这可用于将图像直接保存到QByteArray中:

QImagescaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
QImagescaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const

根据给定的 aspectRatioMode 和 transformMode 返回缩放到由给定大小定义的矩形的图像副本。

如果aspectRatioMode为Qt::IgnoreAspectRatio,则将图像缩放到大小。

如果aspectRatioMode为Qt::KeepAspectRatio,图像将被缩放为内部尺寸尽可能大的矩形,并保持纵横比。

如果aspectRatioMode为Qt::KeepAspectRatioByExpanding,则图像被缩放为外部尺寸尽可能小的矩形,并保持纵横比。

如果给定的size为空(或widthheight为零或负数),该函数将返回一个空图像。

QImagescaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
QImagescaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
返回图像的缩放副本。使用指定的变换模式mode将返回的图像缩放到给定的高度/宽度。 此功能会自动计算图像的宽度/高度,以便保留图像的比例。 如果给定的高度为0或负数,则返回一个空图像。
uchar *scanLine(int i)
const uchar *scanLine(int i) const

返回指向索引为i的扫描线处的像素数据的指针。第一条扫描线的索引为0。 扫描线数据至少32位对齐。对于64位格式,它遵循64位整数的本机对齐方式(大多数平台都是64位,但i386上明显是32位)。 例如,要移除图像中每个像素的绿色成分:

警告:如果您正在访问32位图像数据,请将返回的指针强制转换为QRgb *(QRgb的大小为32位)并使用它来读取/写入像素值。您不能直接使用uchar*指针,因为像素格式取决于底层平台上的字节顺序。使用qRed(), qGreen(), qBlue(), qAlpha() 来访问像素。

voidsetAlphaChannel(const QImage &alphaChannel)
将此图像的alpha通道设置为给定的alphaChannel。 如果alpha通道是8位alpha图像,则直接使用alpha值。否则,alpha通道将转换为8位灰度,并使用像素值的强度。 如果图像已经有一个alpha通道,现有的alpha通道将与新的通道相乘。如果图像没有alpha通道,它将被转换为有alpha通道的格式。 该操作类似于使用 QPainter::CompositionMode_DestinationIn在此图像上绘制alphaChannel作为alpha图像。
voidsetColor(int index, QRgb colorValue)
将颜色表中给定index索引处的颜色设置为给定的colorValue。颜色值是一个ARGB四联体。如果索引超出了颜色表的当前大小,则使用setColorCount()对其进行扩展。
voidsetColorCount(int colorCount)
调整颜色表的大小以包含colorCount条目。 如果扩展颜色表,所有额外的颜色将被设置为透明(即qRgba(0, 0, 0, 0))。 使用图像时,颜色表必须足够大,以包含图像中所有 像素/索引值 的条目,否则结果是不确定的。
voidsetColorSpace(const QColorSpace &colorSpace)
将图像色彩空间设置为colorSpace色彩空间,而不对图像数据执行任何转换。
voidsetColorTable(const QList<QRgb> &colors)
将用于将颜色索引转换为QRgb值的颜色表设置为指定的colors。 使用图像时,颜色表必须足够大,以包含图像中所有像素/索引值的条目,否则结果是不确定的。
voidsetDevicePixelRatio(qreal scaleFactor)

设置图像的设备像素比率。这是图像像素和设备无关像素之间的比率。 默认比例因子scaleFactor为1.0。将其设置为其他值有两种效果: 在图像上打开的QPainters将被缩放。例如,如果在200x200图像上以2.0的比率绘画,将产生100x100的有效(与设备无关)绘画边界。

基于图像大小计算布局几何的Qt中的代码路径将考虑该比率:: QSize layoutSize = image.size() / image.devicePixelRatio(),其最终效果是图像显示为高DPI图像而不是大图像(请参见绘制高分辨率版本的像素图和图像 Drawing High Resolution Versions of Pixmaps and Images)。

voidsetDotsPerMeterX(int x)
voidsetDotsPerMeterY(int y)
将物理仪表中水平/垂直适合的像素数设置为x/y。 dotsPerMeterX()与dotsPerMeterY()定义了图像的预期比例和纵横比,并确定了QPainter在图像上绘制图形的比例。在其他绘画设备上渲染图像时,它不会更改图像的比例或纵横比。
voidsetOffset(const QPoint &offset)
将图像相对于其他图像定位时要偏移的像素数设置为offset
voidsetPixel(const QPoint &position, uint index_or_rgb)
将给定位置position的像素索引或颜色设置为 index_or_rgb。 如果图像的格式是单色或调色板格式,则给定的index_or_rgb值必须是图像颜色表中的索引,否则该参数必须是QRgb值。 如果图像中的位置position不是有效的坐标对,或者如果单色和调色板图像中的index_or_rgb >= colorCount(),则结果未定义。
voidsetPixel(int x, int y, uint index_or_rgb)
将(x,y)处的像素索引或颜色设置为index_or_rgb。
voidsetPixelColor(const QPoint &position, const QColor &color)
将给定位置 position 的颜色设置为color。 如果 position 不是图像中的有效坐标对,或者图像的格式是单色或调色板,则结果未定义。

警告:由于调用了内部detach()函数,此函数的开销很大;如果担心性能问题,我们建议使用scanLine() 或 bits() 直接访问像素数据。

voidsetPixelColor(int x, int y, const QColor &color)
将(x,y)处的像素颜色设置为颜色。
voidsetText(const QString &key, const QString &text)

将图像文本text 设置为给定文本,并将其与给定key相关联。 如果您只想存储单个文本块(即“注释”或描述),您可以传递一个空键,或使用类似“描述”的通用键。 当您调用save() 或QImageWriter::write()时,图像文本将嵌入到图像数据中。

并非所有图像格式都支持嵌入文本。您可以使用QImageWriter::supportsOption()来确定特定图像或格式是否支持嵌入文本。我们举一个例子:

您可以使用 QImageWriter::supportedImageFormats() 来查找您可以使用的图像格式。

QSizesize() const
返回图像的大小,即其 width() 和 height()。
qsizetypesizeInBytes() const
以字节为单位返回图像数据大小。
voidswap(QImage &other)
other图像与此图像交换。这种操作非常快,从不失败。
QStringtext(const QString &key = QString()) const

返回与给定key相关联的图像文本。如果指定的key是空字符串,则返回整个图像文本,每个key-text对由换行符分隔。

QStringListtextKeys() const
返回此图像的文本键。 您可以将这些键与 text() 一起使用来列出某个键的图像文本。
CGImageReftoCGImage() const

创建一个与此 QImage 等效的CGImage。 返回CGImageRef句柄。

返回的CGImageRef参与 QImage 隐式共享,并保存对 QImage 数据的引用。

CGImage是不可变的,永远不会分离图像。写入 QImage 将照常分离。 此功能速度很快,并且不会复制或转换图像数据。支持以下图像格式,并将映射到相应的本机图像类型:

Format_ARGB32  kCGImageAlphaFirst | kCGBitmapByteOrder32Host

Format_RGB32  kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host

Format_RGBA8888_Premultiplied  kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big

Format_RGBA8888  kCGImageAlphaLast | kCGBitmapByteOrder32Big

Format_RGBX8888  kCGImageAlphaNoneSkipLast | kCGBitmapByteOrder32Big

Format_ARGB32_Premultiplied  kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host

不支持其他格式;对于这些情况,该函数返回空CGImageRef。然后,使用此函数的用户可以先将QImage转换为支持的格式,例如Format_ARGB32_Premultiplied

CGImageRef颜色空间被设置为sRGB颜色空间。

HBITMAPtoHBITMAP() const

创建相当于QImage的HBITMAP。 返回HBITMAP句柄。

调用方有责任在使用后释放HBITMAP数据。 对于标准GDI调用(如BitBlt())的使用,图像的格式应为 QImage::Format_RGB32。 将生成的HBITMAP用于AlphaBlend() GDI函数时,图像的格式应为QImage::Format_ARGB32_Premultiplied (使用 convertToFormat())。 将生成的HBITMAP用作应用程序图标或系统托盘图标时,图像的格式应为QImage::Format_ARGB32

HICONtoHICON(const QImage &mask = {}) const
应用蒙版蒙版创建QPixmap的HICON等效对象。 如果mask不为空,它的格式必须为QImage::Format_Mono。返回HICON句柄。 调用方有责任在使用后释放HICON数据。
QImagetransformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const

返回使用给定的变换矩阵 matrix 和变换模式mode 变换的图像的副本。

返回的图像通常与原始图像具有相同的{Image Formats} {format}。然而,复杂的变换可能导致图像中不是所有像素都被原始图像的变换像素覆盖。

在这种情况下,这些背景像素将被分配一个透明的颜色值,并且转换后的图像将被赋予一个带有alpha通道的格式,即使原始图像没有alpha通道。

对变换矩阵matrix进行内部调整,以补偿不需要的平移;即产生的图像是包含原始图像的所有变换点的最小图像。使用 trueMatrix() 函数检索用于变换图像的实际矩阵。

与其他重载不同,此函数可用于对图像执行透视变换。

boolvalid(const QPoint &pos) const
boolvalid(int x, int y) const
如果pos或(x,y)是图像中的有效坐标对,则返回true否则返回false。
intwidth() const
返回图像的宽度。
QVariantoperator QVariant() const
以 QVariant形式返回图像。
booloperator!=(const QImage &image) const
QImage &operator=(const QImage &image)
QImage &operator=(QImage &&other)
booloperator==(const QImage &image) const

【静态公共成员】

QImagefromData(QByteArrayView data, const char *format = nullptr)
从给定的QByteArrayView数据data.构造图像。加载程序尝试使用指定的format格式读取图像。如果没有指定format(默认),加载程序会在数据中搜索文件头来猜测文件格式。 如果指定了format,它必须是QImageReader::supportedImageFormats() 返回的值之一。 如果图像加载失败,返回的图像将是空图像。 
QImagefromData(const uchar *data, int size, const char *format = nullptr)
从给定二进制数据的第一个大小字节构造一个QImage。
QImagefromData(const QByteArray &data, const char *format = nullptr)
从给定dataQByteArray数据构造一个QImage。
QImagefromHBITMAP(HBITMAP hbitmap)

返回一个等效于给定hbitmap的QImage。 HBITMAP不存储有关alpha通道的信息。 在标准情况下,alpha通道被忽略,并创建一个完全不透明的图像(通常为 QImage::Format_RGB32格式)。

不过,也有使用alpha通道的情况,例如应用程序图标或系统托盘图标。在这种情况下,应该对返回的图像调用reinterpretastformat(QImage::Format _ argb 32)以确保格式正确。

QImagefromHICON(HICON icon)
返回一个相当于给定icon图标的图片。
QImage::FormattoImageFormat(QPixelFormat format)
如果图像的格式符合alpha通道,则返回true,否则返回false。
QPixelFormattoPixelFormat(QImage::Format format)
返回图像的高度。
QTransformtrueMatrix(const QTransform &matrix, int width, int height)

返回用于转换具有给定宽度、高度和矩阵的图像的实际矩阵。 使用transformed() 函数变换图像时,会在内部调整变换矩阵以补偿不需要的平移,即transformed() 会返回包含原始图像所有变换点的最小图像。

该函数返回修改后的矩阵,该矩阵将原始图像中的点正确映射到新图像中。 与其他重载不同,此函数创建可用于对图像执行透视变换的变换矩阵。


/QImageCleanupFunction

具有以下签名的函数,可用于实现基本图像内存管理:

void myImageCleanupHandler(void *info);

QDataStream &operator<<(QDataStream &stream, const QImage &image)
QDataStream &operator>>(QDataStream &stream, QImage &image)

<<<返回根页面

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值