QImage Class
Die Klasse QImage bietet eine hardwareunabhängige Bilddarstellung, die einen direkten Zugriff auf die Pixeldaten ermöglicht und als Malgerät verwendet werden kann. Mehr...
Kopfzeile: | #include <QImage> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbungen: | QPaintDevice |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QImage ist Teil von Painting Classes und Implicitly Shared Classes.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
enum | Format { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, …, Format_CMYK8888 } |
enum | InvertMode { InvertRgb, InvertRgba } |
Öffentliche Funktionen
QImage() | |
QImage(const char *const[] xpm) | |
QImage(const QSize &size, QImage::Format format) | |
QImage(const QString &fileName, const char *format = nullptr) | |
QImage(int width, int height, QImage::Format format) | |
QImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
QImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
QImage(const uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
QImage(uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
QImage(const QImage &image) | |
QImage(QImage &&other) | |
virtual | ~QImage() |
bool | allGray() const |
void | applyColorTransform(const QColorTransform &transform) |
(since 6.8) void | applyColorTransform(const QColorTransform &transform, QImage::Format toFormat, Qt::ImageConversionFlags flags = Qt::AutoColor) |
int | bitPlaneCount() const |
uchar * | bits() |
const uchar * | bits() const |
qsizetype | bytesPerLine() const |
qint64 | cacheKey() const |
QRgb | color(int i) const |
int | colorCount() const |
QColorSpace | colorSpace() const |
QList<QRgb> | colorTable() const |
(since 6.4) QImage | colorTransformed(const QColorTransform &transform) const & |
(since 6.8) QImage | colorTransformed(const QColorTransform &transform, QImage::Format toFormat, Qt::ImageConversionFlags flags = Qt::AutoColor) const & |
(since 6.4) QImage | colorTransformed(const QColorTransform &transform) && |
(since 6.8) QImage | colorTransformed(const QColorTransform &transform, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) && |
const uchar * | constBits() const |
const uchar * | constScanLine(int i) const |
void | convertTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | convertToColorSpace(const QColorSpace &colorSpace) |
(since 6.8) void | convertToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) |
QImage | convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) && |
QImage | convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const & |
QImage | convertToFormat(QImage::Format format, const QList<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const |
(since 6.0) QImage | convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) && |
(since 6.0) QImage | convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const & |
QImage | convertedToColorSpace(const QColorSpace &colorSpace) const |
(since 6.8) QImage | convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) && |
(since 6.8) QImage | convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const & |
QImage | copy(const QRect &rectangle = QRect()) const |
QImage | copy(int x, int y, int width, int height) const |
QImage | createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const |
QImage | createHeuristicMask(bool clipTight = true) const |
QImage | createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const |
int | depth() const |
(since 6.2) QSizeF | deviceIndependentSize() const |
qreal | devicePixelRatio() const |
int | dotsPerMeterX() const |
int | dotsPerMeterY() const |
void | fill(uint pixelValue) |
void | fill(Qt::GlobalColor color) |
void | fill(const QColor &color) |
QImage::Format | format() const |
bool | hasAlphaChannel() const |
int | height() const |
void | invertPixels(QImage::InvertMode mode = InvertRgb) |
bool | isGrayscale() const |
bool | isNull() const |
bool | load(const QString &fileName, const char *format = nullptr) |
bool | load(QIODevice *device, const char *format) |
(since 6.2) bool | loadFromData(QByteArrayView data, const char *format = nullptr) |
bool | loadFromData(const QByteArray &data, const char *format = nullptr) |
bool | loadFromData(const uchar *data, int len, const char *format = nullptr) |
(since 6.0) void | mirror(bool horizontal = false, bool vertical = true) |
QImage | mirrored(bool horizontal = false, bool vertical = true) && |
QImage | mirrored(bool horizontal = false, bool vertical = true) const & |
QPoint | offset() const |
QRgb | pixel(const QPoint &position) const |
QRgb | pixel(int x, int y) const |
QColor | pixelColor(const QPoint &position) const |
QColor | pixelColor(int x, int y) const |
QPixelFormat | pixelFormat() const |
int | pixelIndex(const QPoint &position) const |
int | pixelIndex(int x, int y) const |
QRect | rect() const |
bool | reinterpretAsFormat(QImage::Format format) |
(since 6.0) void | rgbSwap() |
QImage | rgbSwapped() && |
QImage | rgbSwapped() const & |
bool | save(const QString &fileName, const char *format = nullptr, int quality = -1) const |
bool | save(QIODevice *device, const char *format = nullptr, int quality = -1) const |
QImage | scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
QImage | scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
QImage | scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const |
QImage | scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const |
uchar * | scanLine(int i) |
const uchar * | scanLine(int i) const |
void | setAlphaChannel(const QImage &alphaChannel) |
void | setColor(int index, QRgb colorValue) |
void | setColorCount(int colorCount) |
void | setColorSpace(const QColorSpace &colorSpace) |
void | setColorTable(const QList<QRgb> &colors) |
void | setDevicePixelRatio(qreal scaleFactor) |
void | setDotsPerMeterX(int x) |
void | setDotsPerMeterY(int y) |
void | setOffset(const QPoint &offset) |
void | setPixel(const QPoint &position, uint index_or_rgb) |
void | setPixel(int x, int y, uint index_or_rgb) |
void | setPixelColor(const QPoint &position, const QColor &color) |
void | setPixelColor(int x, int y, const QColor &color) |
void | setText(const QString &key, const QString &text) |
QSize | size() const |
qsizetype | sizeInBytes() const |
void | swap(QImage &other) |
QString | text(const QString &key = QString()) const |
QStringList | textKeys() const |
CGImageRef | toCGImage() const |
(since 6.0) HBITMAP | toHBITMAP() const |
(since 6.0) HICON | toHICON(const QImage &mask = {}) const |
QImage | transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const |
bool | valid(const QPoint &pos) const |
bool | valid(int x, int y) const |
int | width() const |
QVariant | operator QVariant() const |
bool | operator!=(const QImage &image) const |
QImage & | operator=(QImage &&other) |
QImage & | operator=(const QImage &image) |
bool | operator==(const QImage &image) const |
Statische öffentliche Mitglieder
(since 6.2) QImage | fromData(QByteArrayView data, const char *format = nullptr) |
QImage | fromData(const QByteArray &data, const char *format = nullptr) |
QImage | fromData(const uchar *data, int size, const char *format = nullptr) |
(since 6.0) QImage | fromHBITMAP(HBITMAP hbitmap) |
(since 6.0) QImage | fromHICON(HICON icon) |
QImage::Format | toImageFormat(QPixelFormat format) |
QPixelFormat | toPixelFormat(QImage::Format format) |
QTransform | trueMatrix(const QTransform &matrix, int width, int height) |
Verwandte Nicht-Members
QImageCleanupFunction | |
QDataStream & | operator<<(QDataStream &stream, const QImage &image) |
QDataStream & | operator>>(QDataStream &stream, QImage &image) |
Detaillierte Beschreibung
Qt bietet vier Klassen für den Umgang mit Bilddaten: QImage, QPixmap, QBitmap und QPicture. QImage ist für E/A und für direkten Pixelzugriff und -manipulation konzipiert und optimiert, während QPixmap für die Anzeige von Bildern auf dem Bildschirm konzipiert und optimiert ist. QBitmap ist nur eine Komfortklasse, die QPixmap erbt und eine Tiefe von 1 gewährleistet. Schließlich ist die Klasse QPicture ein Malgerät, das QPainter Befehle aufzeichnet und wiedergibt.
Da QImage eine QPaintDevice Unterklasse ist, kann QPainter verwendet werden, um direkt auf Bilder zu zeichnen. Bei der Verwendung von QPainter für ein QImage kann das Malen in einem anderen Thread als dem aktuellen GUI-Thread ausgeführt werden.
Die QImage Klasse unterstützt mehrere Bildformate, die durch das Format enum beschrieben werden. Dazu gehören Monochrom-, 8-Bit-, 32-Bit- und Alpha-Blended-Bilder, die in allen Versionen von Qt 4.x verfügbar sind.
QImage bietet eine Sammlung von Funktionen, die verwendet werden können, um eine Vielzahl von Informationen über das Bild zu erhalten. Es gibt auch mehrere Funktionen, die eine Transformation des Bildes ermöglichen.
QImage-Objekte können als Wert weitergegeben werden, da die QImage-Klasse implizites Data-Sharing verwendet. QImage-Objekte können auch gestreamt und verglichen werden.
Hinweis: Wenn Sie QImage-Objekte in einem statischen Build von Qt laden möchten, lesen Sie bitte das Plugin HowTo.
Warnung: Das Malen auf einem QImage mit dem Format QImage::Format_Indexed8 oder QImage::Format_CMYK8888 wird nicht unterstützt.
Lesen und Schreiben von Bilddateien
QImage bietet mehrere Möglichkeiten, eine Bilddatei zu laden: Die Datei kann beim Konstruieren des QImage-Objekts geladen werden, oder später mit den Funktionen load() oder loadFromData(). QImage bietet auch die statische Funktion fromData(), die ein QImage aus den gegebenen Daten konstruiert. Wenn ein Bild geladen wird, kann der Dateiname entweder auf eine tatsächliche Datei auf der Festplatte oder auf eine der eingebetteten Ressourcen der Anwendung verweisen. Siehe den Überblick über das Qt Resource System für Details über die Einbettung von Bildern und anderen Ressourcendateien in die ausführbare Datei der Anwendung.
Rufen Sie einfach die Funktion save() auf, um ein QImage-Objekt zu speichern.
Die vollständige Liste der unterstützten Dateiformate ist über die Funktionen QImageReader::supportedImageFormats() und QImageWriter::supportedImageFormats() verfügbar. Neue Dateiformate können als Plugins hinzugefügt werden. Standardmäßig unterstützt Qt die folgenden Formate:
Format | Beschreibung | Qt's Unterstützung |
---|---|---|
BMP | Windows-Bitmap | Lesen/Schreiben |
GIF | Grafik-Austauschformat (optional) | Lesen |
JPG | Gemeinsame Expertengruppe für Fotografie | Lesen/Schreiben |
JPEG | Gemeinsame Expertengruppe für Bildbearbeitung | Lesen/Schreiben |
PNG | Portable Netzwerkgrafik | Lesen/Schreiben |
PBM | Tragbares Bitmap | Lesen |
PGM | Portable Graymap | Lesen |
PPM | Portable Pixmap | Lesen/Schreiben |
XBM | X11 Bitmap | Lesen/Schreiben |
XPM | X11 Pixmap | Lesen/Schreiben |
Bild-Informationen
QImage bietet eine Sammlung von Funktionen, die verwendet werden können, um eine Vielzahl von Informationen über das Bild zu erhalten:
Verfügbare Funktionen | |
---|---|
Geometrie | Die Funktionen size(), width(), height(), dotsPerMeterX() und dotsPerMeterY() liefern Informationen über die Bildgröße und das Seitenverhältnis. Die Funktion rect() gibt das umschließende Rechteck des Bildes zurück. Die Funktion valid() gibt an, ob ein gegebenes Koordinatenpaar innerhalb dieses Rechtecks liegt. Die Funktion offset() gibt die Anzahl der Pixel zurück, um die das Bild versetzt werden soll, wenn es relativ zu anderen Bildern positioniert wird, was auch mit der Funktion setOffset() manipuliert werden kann. |
Farben | Die Farbe eines Pixels kann durch Übergabe seiner Koordinaten an die Funktion pixel() abgerufen werden. Die Funktion pixel() gibt die Farbe als QRgb Wert zurück, unabhängig vom Format des Bildes. Bei monochromen und 8-Bit-Bildern liefern die Funktionen colorCount() und colorTable() Informationen über die zur Speicherung der Bilddaten verwendeten Farbkomponenten: Die Funktion colorTable() gibt die gesamte Farbtabelle des Bildes zurück. Um einen einzelnen Eintrag zu erhalten, verwenden Sie die Funktion pixelIndex(), um den Pixelindex für ein bestimmtes Koordinatenpaar abzurufen, und verwenden Sie dann die Funktion color(), um die Farbe abzurufen. Beachten Sie, dass Sie, wenn Sie ein 8-Bit-Bild manuell erstellen, auch eine gültige Farbtabelle für das Bild festlegen müssen. Die Funktion hasAlphaChannel() gibt an, ob das Format des Bildes den Alphakanal berücksichtigt oder nicht. Die Funktionen allGray() und isGrayscale() ermitteln, ob die Farben eines Bildes alle Grautöne enthalten. Siehe auch die Abschnitte Pixel Manipulation und Image Transformations. |
Text | Die Funktion text() gibt den Bildtext zurück, der mit dem angegebenen Textschlüssel verbunden ist. Die Textschlüssel eines Bildes können mit der Funktion textKeys() abgerufen werden. Verwenden Sie die Funktion setText(), um den Text eines Bildes zu ändern. |
Informationen auf niedriger Ebene | Die Funktion depth() gibt die Tiefe des Bildes zurück. Die unterstützten Tiefen sind 1 (monochrom), 8, 16, 24 und 32 Bit. Die Funktion bitPlaneCount() gibt an, wie viele dieser Bits verwendet werden. Weitere Informationen finden Sie im Abschnitt Image Formats. Die Funktionen format(), bytesPerLine() und sizeInBytes() liefern Low-Level-Informationen über die im Bild gespeicherten Daten. Die Funktion cacheKey() gibt eine Nummer zurück, die den Inhalt dieses QImage-Objekts eindeutig identifiziert. |
Pixel Manipulation
Die Funktionen zur Manipulation der Pixel eines Bildes hängen vom Bildformat ab. Der Grund dafür ist, dass monochrome und 8-Bit-Bilder indexbasiert sind und eine Farbnachschlagetabelle verwenden, während 32-Bit-Bilder ARGB-Werte direkt speichern. Weitere Informationen zu Bildformaten finden Sie im Abschnitt Image Formats.
Im Falle eines 32-Bit-Bildes kann die Funktion setPixel() verwendet werden, um die Farbe des Pixels an den angegebenen Koordinaten in eine beliebige andere Farbe zu ändern, die als ARGB-Quadruplet angegeben ist. Um einen geeigneten QRgb Wert zu erzeugen, verwenden Sie die Funktionen qRgb() (Hinzufügen einer Standard-Alphakomponente zu den angegebenen RGB-Werten, d. h. Erzeugung einer undurchsichtigen Farbe) oder qRgba(). Zum Beispiel:
32-Bit | |
---|---|
![]() |
Bei 8-Bit- und Monochrom-Bildern ist der Pixelwert nur ein Index aus der Farbtabelle des Bildes. Daher kann die Funktion setPixel() nur verwendet werden, um die Farbe des Pixels an den angegebenen Koordinaten in eine vordefinierte Farbe aus der Farbtabelle des Bildes zu ändern, d. h. sie kann nur den Indexwert des Pixels ändern. Um eine Farbe in der Farbtabelle eines Bildes zu ändern oder hinzuzufügen, verwenden Sie die Funktion setColor().
Ein Eintrag in der Farbtabelle ist ein ARGB-Quadruplet, das als QRgb Wert kodiert ist. Verwenden Sie die Funktionen qRgb() und qRgba(), um einen geeigneten QRgb Wert für die Verwendung mit der Funktion setColor() zu erstellen. Zum Beispiel:
8-Bit | |
---|---|
![]() | QImage image(3, 3, QImage::Format_Indexed8); QRgb value; value = qRgb(122, 163, 39); // 0xff7aa327 image.setColor(0, value); value = qRgb(237, 187, 51); // 0xffedba31 image.setColor(1, value); value = qRgb(189, 149, 39); // 0xffbd9527 image.setColor(2, value); image.setPixel(0, 1, 0); image.setPixel(1, 0, 0); image.setPixel(1, 1, 2); image.setPixel(2, 1, 1); |
Für Bilder mit mehr als 8 Bit pro Farbkanal. Die Methoden setPixelColor() und pixelColor() können verwendet werden, um mit QColor Werte zu setzen und zu erhalten.
QImage bietet auch die Funktion scanLine(), die einen Zeiger auf die Pixeldaten an der Scanline mit dem angegebenen Index zurückgibt, und die Funktion bits(), die einen Zeiger auf die ersten Pixeldaten zurückgibt (dies entspricht scanLine(0)
).
Bildformate
Jedes in einem QImage gespeicherte Pixel wird durch eine ganze Zahl dargestellt. Die Größe des Integers variiert je nach Format. QImage unterstützt mehrere Bildformate, die durch das Format enum beschrieben werden.
Monochrome Bilder werden mit 1-Bit-Indizes in einer Farbtabelle mit maximal zwei Farben gespeichert. Es gibt zwei verschiedene Arten von monochromen Bildern: Big Endian (MSB first) oder Little Endian (LSB first) Bitreihenfolge.
8-Bit-Bilder werden mit 8-Bit-Indizes in einer Farbtabelle gespeichert, d. h. sie haben ein einziges Byte pro Pixel. Die Farbtabelle ist ein QList<QRgb>, und der Typedef QRgb entspricht einem unsigned int, der ein ARGB-Quadruplet im Format 0xAARRGGBB enthält.
32-Bit-Bilder haben keine Farbtabelle; stattdessen enthält jedes Pixel einen QRgb Wert. Es gibt drei verschiedene Arten von 32-Bit-Bildern, die RGB- (d. h. 0xffRRGGBB), ARGB- bzw. vormultiplizierte ARGB-Werte speichern. Im vormultiplizierten Format werden die Rot-, Grün- und Blaukanäle mit der Alphakomponente geteilt durch 255 multipliziert.
Das Format eines Bildes kann mit der Funktion format() abgefragt werden. Verwenden Sie die Funktionen convertToFormat(), um ein Bild in ein anderes Format zu konvertieren. Die Funktionen allGray() und isGrayscale() geben an, ob ein Farbbild sicher in ein Graustufenbild umgewandelt werden kann.
Bildtransformationen
QImage unterstützt eine Reihe von Funktionen zur Erstellung eines neuen Bildes, das eine transformierte Version des Originals ist: Die Funktion createAlphaMask() erstellt eine 1-bpp-Maske aus dem Alphapuffer dieses Bildes und gibt sie zurück, und die Funktion createHeuristicMask() erstellt eine heuristische 1-bpp-Maske für dieses Bild und gibt sie zurück. Die letztgenannte Funktion wählt eine Farbe aus einer der Ecken aus und entfernt dann Pixel dieser Farbe, beginnend an allen Rändern.
Die Funktion mirrored() gibt eine Spiegelung des Bildes in der gewünschten Richtung zurück, die Funktion scaled() gibt eine Kopie des Bildes zurück, die auf ein Rechteck mit den gewünschten Abmessungen skaliert ist, und die Funktion rgbSwapped() konstruiert ein BGR-Bild aus einem RGB-Bild.
Die Funktionen scaledToWidth() und scaledToHeight() geben skalierte Kopien des Bildes zurück.
Die Funktion transformed() gibt eine Kopie des Bildes zurück, die mit der angegebenen Transformationsmatrix und dem Transformationsmodus transformiert wurde: Intern wird die Transformationsmatrix angepasst, um unerwünschte Verschiebungen zu kompensieren, d. h. transformed() gibt das kleinste Bild zurück, das alle transformierten Punkte des Originalbildes enthält. Die statische Funktion trueMatrix() gibt die tatsächliche Matrix zurück, die für die Transformation des Bildes verwendet wurde.
Es gibt auch Funktionen zum Ändern von Attributen eines Bildes an Ort und Stelle:
Funktion | Beschreibung |
---|---|
setDotsPerMeterX() | Legt das Seitenverhältnis fest, indem es die Anzahl der Pixel bestimmt, die horizontal in einen physischen Meter passen. |
setDotsPerMeterY() | Definiert das Seitenverhältnis, indem es die Anzahl der Pixel festlegt, die vertikal in einen physischen Meter passen. |
fill() | Füllt das gesamte Bild mit dem angegebenen Pixelwert. |
invertPixels() | Invertiert alle Pixelwerte im Bild mit dem angegebenen InvertMode Wert. |
setColorTable() | Legt die Farbtabelle fest, die zur Übersetzung von Farbindizes verwendet wird. Nur monochrome und 8-Bit-Formate. |
setColorCount() | Ändert die Größe der Farbtabelle. Nur Monochrom- und 8-Bit-Formate. |
Siehe auch QImageReader, QImageWriter, QPixmap, QSvgRenderer, Beispiel für Bildkomposition und Scribble-Beispiel.
Dokumentation der Mitgliedstypen
enum QImage::Format
Die folgenden Bildformate sind in Qt verfügbar. Siehe die Hinweise nach der Tabelle.
Konstante | Wert | Beschreibung |
---|---|---|
QImage::Format_Invalid | 0 | Das Bild ist ungültig. |
QImage::Format_Mono | 1 | Das Bild wird mit 1 Bit pro Pixel gespeichert. Die Bytes werden mit dem höchstwertigen Bit (MSB) zuerst gepackt. |
QImage::Format_MonoLSB | 2 | Das Bild wird mit 1 Bit pro Pixel gespeichert. Die Bytes werden mit dem niederwertigen Bit (LSB) zuerst gepackt. |
QImage::Format_Indexed8 | 3 | Das Bild wird mit 8-Bit-Indizes in einer Farbkarte gespeichert. |
QImage::Format_RGB32 | 4 | Das Bild wird in einem 32-Bit-RGB-Format gespeichert (0xffRRGGBB). |
QImage::Format_ARGB32 | 5 | Das Bild wird in einem 32-Bit-ARGB-Format gespeichert (0xAARRGGBB). |
QImage::Format_ARGB32_Premultiplied | 6 | Das Bild wird in einem vormultiplizierten 32-Bit-ARGB-Format (0xAARRGGBB) gespeichert, d. h. die Kanäle Rot, Grün und Blau werden mit der Alphakomponente geteilt durch 255 multipliziert. (Wenn RR, GG oder BB einen höheren Wert als der Alphakanal hat, sind die Ergebnisse undefiniert). Bestimmte Operationen (z. B. die Bildkomposition mit Alpha-Blending) sind mit vormultipliziertem ARGB32 schneller als mit einfachem ARGB32. |
QImage::Format_RGB16 | 7 | Das Bild wird in einem 16-Bit-RGB-Format (5-6-5) gespeichert. |
QImage::Format_ARGB8565_Premultiplied | 8 | Das Bild wird in einem vormultiplizierten 24-Bit-ARGB-Format gespeichert (8-5-6-5). |
QImage::Format_RGB666 | 9 | Das Bild wird in einem 24-Bit-RGB-Format gespeichert (6-6-6). Die ungenutzten höchstwertigen Bits sind immer Null. |
QImage::Format_ARGB6666_Premultiplied | 10 | Das Bild wird in einem vormultiplizierten 24-Bit-ARGB-Format (6-6-6-6) gespeichert. |
QImage::Format_RGB555 | 11 | Das Bild wird in einem 16-Bit-RGB-Format (5-5-5) gespeichert. Das unbenutzte höchstwertige Bit ist immer Null. |
QImage::Format_ARGB8555_Premultiplied | 12 | Das Bild wird in einem vormultiplizierten 24-Bit-ARGB-Format gespeichert (8-5-5-5). |
QImage::Format_RGB888 | 13 | Das Bild wird in einem 24-Bit-RGB-Format (8-8-8) gespeichert. |
QImage::Format_RGB444 | 14 | Das Bild wird in einem 16-Bit-RGB-Format (4-4-4) gespeichert. Die ungenutzten Bits sind immer Null. |
QImage::Format_ARGB4444_Premultiplied | 15 | Das Bild wird in einem vormultiplizierten 16-Bit-ARGB-Format (4-4-4-4) gespeichert. |
QImage::Format_RGBX8888 (since Qt 5.2) | 16 | Das Bild wird in einem 32-Bit-RGB(x)-Format (8-8-8-8) mit Bytes gespeichert. Dies entspricht dem Format_RGBA8888, außer dass Alpha immer 255 sein muss. |
QImage::Format_RGBA8888 (since Qt 5.2) | 17 | Das Bild wird in einem 32-Bit-RGBA-Format (8-8-8-8) mit Byte-Anordnung gespeichert. Im Gegensatz zu ARGB32 ist dies ein byte-geordnetes Format, d.h. die 32-Bit-Kodierung unterscheidet sich zwischen Big-Endian- und Little-Endian-Architekturen, nämlich (0xRRGGBBAA) bzw. (0xAABBGGRR). Die Reihenfolge der Farben ist auf jeder Architektur gleich, wenn sie als Bytes 0xRR,0xGG,0xBB,0xAA gelesen werden. |
QImage::Format_RGBA8888_Premultiplied (since Qt 5.2) | 18 | Das Bild wird in einem vormultiplizierten 32-Bit-RGBA-Format mit Byte-Reihenfolge (8-8-8-8) gespeichert. |
QImage::Format_BGR30 (since Qt 5.4) | 19 | Das Bild wird in einem 32-Bit-BGR-Format gespeichert (x-10-10-10). |
QImage::Format_A2BGR30_Premultiplied (since Qt 5.4) | 20 | Das Bild wird in einem vormultiplizierten 32-Bit-ABGR-Format (2-10-10-10) gespeichert. |
QImage::Format_RGB30 (since Qt 5.4) | 21 | Das Bild wird in einem 32-Bit-RGB-Format gespeichert (x-10-10-10). |
QImage::Format_A2RGB30_Premultiplied (since Qt 5.4) | 22 | Das Bild wird in einem vormultiplizierten 32-Bit-ARGB-Format gespeichert (2-10-10-10). |
QImage::Format_Alpha8 (since Qt 5.5) | 23 | Das Bild wird in einem 8-Bit-Alpha-Format gespeichert. |
QImage::Format_Grayscale8 (since Qt 5.5) | 24 | Das Bild wird in einem 8-Bit-Graustufenformat gespeichert. |
QImage::Format_Grayscale16 (since Qt 5.13) | 28 | Das Bild wird in einem 16-Bit-Graustufenformat gespeichert. |
QImage::Format_RGBX64 (since Qt 5.12) | 25 | Das Bild wird in einem 64-Bit-Halbwort-RGB(x)-Format (16-16-16-16) gespeichert. Dies entspricht dem Format_RGBA64, außer dass Alpha immer 65535 sein muss. |
QImage::Format_RGBA64 (since Qt 5.12) | 26 | Das Bild wird in einem 64-Bit-Halbwort-RGBA-Format (16-16-16-16) gespeichert. |
QImage::Format_RGBA64_Premultiplied (since Qt 5.12) | 27 | Das Bild wird in einem vormultiplizierten 64-Bit-RGBA-Halbbildformat (16-16-16-16) gespeichert. |
QImage::Format_BGR888 (since Qt 5.14) | 29 | Das Bild wird in einem 24-Bit-BGR-Format gespeichert. |
QImage::Format_RGBX16FPx4 (since Qt 6.2) | 30 | Das Bild wird mit vier 16-Bit-Halbwort-Gleitkomma-RGBx-Formaten (16FP-16FP-16FP-16FP) gespeichert. Dies entspricht dem Format_RGBA16FPx4, außer dass Alpha immer 1,0 sein muss. |
QImage::Format_RGBA16FPx4 (since Qt 6.2) | 31 | Das Bild wird in einem 16-Bit-Halbwort-Gleitkomma-RGBA-Format (16FP-16FP-16FP-16FP) gespeichert. |
QImage::Format_RGBA16FPx4_Premultiplied (since Qt 6.2) | 32 | Das Bild wird in einem vormultiplizierten 16-Bit-Halbwort-Gleitkomma-RGBA-Format (16FP-16FP-16FP-16FP) gespeichert. |
QImage::Format_RGBX32FPx4 (since Qt 6.2) | 33 | Das Bild wird in einem 32-Bit-Gleitkomma-RGBx-Format gespeichert (32FP-32FP-32FP-32FP). Dies ist dasselbe wie Format_RGBA32FPx4, außer dass Alpha immer 1,0 sein muss. |
QImage::Format_RGBA32FPx4 (since Qt 6.2) | 34 | Das Bild wird in einem Vier-32-Bit-Gleitkomma-RGBA-Format (32FP-32FP-32FP-32FP) gespeichert. |
QImage::Format_RGBA32FPx4_Premultiplied (since Qt 6.2) | 35 | Das Bild wird in einem vormultiplizierten vier 32-Bit-Gleitkomma-RGBA-Format (32FP-32FP-32FP-32FP) gespeichert. |
QImage::Format_CMYK8888 (since Qt 6.8) | 36 | Das Bild wird in einem 32-Bit-CMYK-Format mit Byte-Order gespeichert. |
Hinweis: Das Zeichnen in eine QImage mit dem Format QImage::Format_Indexed8 oder QImage::Format_CMYK8888 wird nicht unterstützt.
Hinweis: Vermeiden Sie das direkte Rendern in die meisten dieser Formate mit QPainter. Das Rendering ist am besten für die Formate Format_RGB32
und Format_ARGB32_Premultiplied
optimiert, und sekundär für das Rendering in die Formate Format_RGB16
, Format_RGBX8888
, Format_RGBA8888_Premultiplied
, Format_RGBX64
und Format_RGBA64_Premultiplied
Siehe auch format() und convertToFormat().
enum QImage::InvertMode
Dieser Enum-Typ wird verwendet, um zu beschreiben, wie die Pixelwerte in der Funktion invertPixels() invertiert werden sollen.
Konstante | Wert | Beschreibung |
---|---|---|
QImage::InvertRgb | 0 | Invertiert nur die RGB-Werte und lässt den Alphakanal unverändert. |
QImage::InvertRgba | 1 | Invertiert alle Kanäle, einschließlich des Alphakanals. |
Siehe auch invertPixels().
Dokumentation der Mitgliedsfunktionen
QImage QImage::convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
QImage QImage::convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
Gibt eine Kopie des Bildes in der angegebenen format zurück.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Konvertierungsprozesses behandelt werden.
Siehe auch convertTo() und Image Formats.
[since 6.0]
QImage QImage::convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
[since 6.0]
QImage QImage::convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
Gibt eine Kopie des Bildes in der angegebenen format zurück.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Konvertierungsprozesses behandelt werden.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch convertTo() und Image Formats.
QImage QImage::mirrored(bool horizontal = false, bool vertical = true) &&
QImage QImage::mirrored(bool horizontal = false, bool vertical = true) const &
Gibt eine Spiegelung des Bildes zurück, gespiegelt in horizontaler und/oder vertikaler Richtung, je nachdem, ob horizontal und vertical auf true oder false gesetzt sind.
Beachten Sie, dass das Originalbild nicht verändert wird.
Siehe auch mirror() und Image Transformations.
Gibt ein QImage zurück, in dem die Werte der roten und blauen Komponenten aller Pixel vertauscht wurden, wodurch ein RGB-Bild in ein BGR-Bild umgewandelt wird.
Das Original QImage wird nicht verändert.
Siehe auch rgbSwap() und Image Transformations.
[since 6.8]
QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
[since 6.8]
QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
Gibt das in colorSpace und format konvertierte Bild zurück.
Wenn das Bild keinen gültigen Farbraum hat, wird ein Nullwert QImage zurückgegeben.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Formatkonvertierungsprozesses behandelt werden.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch colorTransformed().
[noexcept]
QImage::QImage()
Konstruiert ein Null-Bild.
Siehe auch isNull().
[explicit]
QImage::QImage(const char *const[] xpm)
Konstruiert ein Bild aus dem angegebenen xpm Bild.
Stellen Sie sicher, dass das Bild ein gültiges XPM-Bild ist. Fehler werden stillschweigend ignoriert.
Beachten Sie, dass es möglich ist, die XPM-Variable durch eine ungewöhnliche Deklaration ein wenig zu verkleinern:
static const char * const start_xpm[] = { "16 15 8 1", "a c #cec6bd", // etc. };
Das zusätzliche const
macht die gesamte Definition schreibgeschützt, was etwas effizienter ist (z. B. wenn sich der Code in einer gemeinsam genutzten Bibliothek befindet) und mit der Anwendung im ROM gespeichert werden kann.
QImage::QImage(const QSize &size, QImage::Format format)
Konstruiert ein Bild mit dem angegebenen size und format.
Ein null Bild wird zurückgegeben, wenn kein Speicher zugewiesen werden kann.
Warnung: Es wird ein QImage mit uninitialisierten Daten erzeugt. Rufen Sie fill() auf, um das Bild mit einem geeigneten Pixelwert zu füllen, bevor Sie mit QPainter darauf zeichnen.
[explicit]
QImage::QImage(const QString &fileName, const char *format = nullptr)
Konstruiert ein Bild und versucht, das Bild aus der Datei mit der angegebenen fileName zu laden.
Der Lader versucht, das Bild unter Verwendung der angegebenen format zu lesen. Wenn format nicht angegeben ist (was der Standard ist), wird es automatisch anhand des Suffixes und des Headers der Datei erkannt. Für Details siehe {QImageReader::setAutoDetectImageFormat()}{QImageReader}.
Wenn das Laden des Bildes fehlgeschlagen ist, ist dieses Objekt ein Null-Bild.
Der Dateiname kann entweder auf eine tatsächliche Datei auf der Festplatte oder auf eine der eingebetteten Ressourcen der Anwendung verweisen. Siehe die Übersicht über das Ressourcensystem für Details zum Einbetten von Bildern und anderen Ressourcendateien in die ausführbare Datei der Anwendung.
Siehe auch isNull() und Reading and Writing Image Files.
QImage::QImage(int width, int height, QImage::Format format)
Konstruiert ein Bild mit den angegebenen width, height und format.
Es wird ein null Bild zurückgegeben, wenn kein Speicher zugewiesen werden kann.
Warnung: Es wird ein QImage mit uninitialisierten Daten erzeugt. Rufen Sie fill() auf, um das Bild mit einem geeigneten Pixelwert zu füllen, bevor Sie mit QPainter darauf zeichnen.
QImage::QImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Konstruiert ein Bild mit den angegebenen width, height und format, das einen vorhandenen Nur-Lese-Speicherpuffer, data, verwendet. width und height müssen in Pixeln angegeben werden, data muss 32-Bit ausgerichtet sein, und jede Scanline der Daten im Bild muss ebenfalls 32-Bit ausgerichtet sein.
Der Puffer muss während der gesamten Lebensdauer des QImage und aller Kopien, die nicht verändert oder anderweitig vom Originalpuffer getrennt wurden, gültig bleiben. Das Bild löscht den Puffer bei der Zerstörung nicht. Sie können einen Funktionszeiger cleanupFunction zusammen mit einem zusätzlichen Zeiger cleanupInfo bereitstellen, der aufgerufen wird, wenn die letzte Kopie zerstört wird.
Wenn format ein indiziertes Farbformat ist, ist die Farbtabelle des Bildes zunächst leer und muss mit setColorCount() oder setColorTable() ausreichend erweitert werden, bevor das Bild verwendet wird.
Anders als der ähnliche QImage-Konstruktor, der einen nicht-konstanten Datenpuffer annimmt, wird diese Version den Inhalt des Puffers niemals verändern. Zum Beispiel gibt der Aufruf von QImage::bits() eine Deep Copy des Bildes zurück und nicht den Puffer, der an den Konstruktor übergeben wurde. Dies ermöglicht die Effizienz der Konstruktion eines QImage aus Rohdaten, ohne die Möglichkeit, dass die Rohdaten verändert werden.
QImage::QImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Konstruiert ein Bild mit den angegebenen width, height und format, das einen vorhandenen Speicherpuffer, data, verwendet. width und height müssen in Pixeln angegeben werden, data muss 32-Bit ausgerichtet sein, und jede Scanline der Daten im Bild muss ebenfalls 32-Bit ausgerichtet sein.
Der Puffer muss während der gesamten Lebensdauer des QImage und aller Kopien, die nicht verändert oder anderweitig vom Originalpuffer getrennt wurden, gültig bleiben. Das Bild löscht den Puffer bei der Zerstörung nicht. Sie können einen Funktionszeiger cleanupFunction zusammen mit einem zusätzlichen Zeiger cleanupInfo bereitstellen, der aufgerufen wird, wenn die letzte Kopie zerstört wird.
Wenn format ein indiziertes Farbformat ist, ist die Farbtabelle des Bildes zunächst leer und muss mit setColorCount() oder setColorTable() ausreichend erweitert werden, bevor das Bild verwendet wird.
QImage::QImage(const uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Konstruiert ein Bild mit den angegebenen width, height und format, das einen vorhandenen Speicherpuffer, data, verwendet. width und height müssen in Pixel angegeben werden. bytesPerLine gibt die Anzahl der Bytes pro Zeile (stride) an.
Der Puffer muss während der gesamten Lebensdauer des QImage und aller Kopien, die nicht verändert oder anderweitig vom ursprünglichen Puffer getrennt wurden, gültig bleiben. Das Bild löscht den Puffer bei der Zerstörung nicht. Sie können einen Funktionszeiger cleanupFunction zusammen mit einem zusätzlichen Zeiger cleanupInfo bereitstellen, der aufgerufen wird, wenn die letzte Kopie zerstört wird.
Wenn format ein indiziertes Farbformat ist, ist die Farbtabelle des Bildes zunächst leer und muss mit setColorCount() oder setColorTable() ausreichend erweitert werden, bevor das Bild verwendet wird.
Anders als der ähnliche QImage-Konstruktor, der einen nicht-konstanten Datenpuffer annimmt, wird diese Version den Inhalt des Puffers niemals verändern. Zum Beispiel gibt der Aufruf von QImage::bits() eine Deep Copy des Bildes zurück und nicht den Puffer, der an den Konstruktor übergeben wurde. Dies ermöglicht die Effizienz der Konstruktion eines QImage aus Rohdaten, ohne die Möglichkeit, dass die Rohdaten verändert werden.
QImage::QImage(uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Konstruiert ein Bild mit den angegebenen width, height und format, das einen vorhandenen Speicherpuffer, data, verwendet. width und height müssen in Pixel angegeben werden. bytesPerLine gibt die Anzahl der Bytes pro Zeile (stride) an.
Der Puffer muss während der gesamten Lebensdauer des QImage und aller Kopien, die nicht verändert oder anderweitig vom ursprünglichen Puffer getrennt wurden, gültig bleiben. Das Bild löscht den Puffer bei der Zerstörung nicht. Sie können einen Funktionszeiger cleanupFunction zusammen mit einem zusätzlichen Zeiger cleanupInfo bereitstellen, der aufgerufen wird, wenn die letzte Kopie zerstört wird.
Wenn format ein indiziertes Farbformat ist, ist die Farbtabelle des Bildes zunächst leer und muss mit setColorCount() oder setColorTable() ausreichend erweitert werden, bevor das Bild verwendet wird.
QImage::QImage(const QImage &image)
Konstruiert eine oberflächliche Kopie der angegebenen image.
Weitere Informationen über oberflächliche Kopien finden Sie in der Dokumentation Implicit Data Sharing.
Siehe auch copy().
[noexcept]
QImage::QImage(QImage &&other)
Move-konstruiert eine QImage-Instanz, die auf das gleiche Objekt zeigt, auf das other gezeigt hat.
[virtual noexcept]
QImage::~QImage()
Zerstört das Bild und bereinigt es.
bool QImage::allGray() const
Gibt true
zurück, wenn alle Farben des Bildes Grautöne sind (d. h. ihre Rot-, Grün- und Blauanteile sind gleich); andernfalls false.
Beachten Sie, dass diese Funktion bei Bildern ohne Farbtabelle langsam ist.
Siehe auch isGrayscale().
void QImage::applyColorTransform(const QColorTransform &transform)
Wendet die Farbtransformation transform auf alle Pixel des Bildes an.
[since 6.8]
void QImage::applyColorTransform(const QColorTransform &transform, QImage::Format toFormat, Qt::ImageConversionFlags flags = Qt::AutoColor)
Wendet die Farbtransformation transform auf alle Pixel im Bild an und konvertiert das Format des Bildes nach toFormat.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Formatkonvertierungsprozesses behandelt werden.
Diese Funktion wurde in Qt 6.8 eingeführt.
int QImage::bitPlaneCount() const
Gibt die Anzahl der Bitebenen des Bildes zurück.
Die Anzahl der Bitebenen ist die Anzahl der Bits der Farb- und Transparenzinformationen für jedes Pixel. Sie unterscheidet sich von der Tiefe (d. h. sie ist kleiner als diese), wenn das Bildformat ungenutzte Bits enthält.
Siehe auch depth(), format(), und Image Formats.
uchar *QImage::bits()
Gibt einen Zeiger auf die ersten Pixeldaten zurück. Dies ist gleichbedeutend mit scanLine(0).
Beachten Sie, dass QImage eine implizite gemeinsame Datennutzung verwendet. Diese Funktion führt eine Tiefenkopie der gemeinsam genutzten Pixeldaten durch und stellt damit sicher, dass diese QImage die einzige ist, die den aktuellen Rückgabewert verwendet.
Siehe auch scanLine(), sizeInBytes(), und constBits().
const uchar *QImage::bits() const
Dies ist eine überladene Funktion.
Beachten Sie, dass QImage eine implizite Datenfreigabe verwendet, diese Funktion jedoch keine Tiefenkopie der freigegebenen Pixeldaten durchführt, da die zurückgegebenen Daten konstant sind.
qsizetype QImage::bytesPerLine() const
Gibt die Anzahl der Bytes pro Bildabtastzeile zurück.
Dies entspricht sizeInBytes() / height(), wenn height() ungleich Null ist.
Siehe auch scanLine().
qint64 QImage::cacheKey() const
Gibt eine Nummer zurück, die den Inhalt dieses QImage Objekts identifiziert. Unterschiedliche QImage Objekte können nur dann denselben Schlüssel haben, wenn sie sich auf denselben Inhalt beziehen.
Der Schlüssel wird sich ändern, wenn das Bild geändert wird.
QRgb QImage::color(int i) const
Gibt die Farbe in der Farbtabelle mit dem Index i zurück. Die erste Farbe steht bei Index 0.
Die Farben in der Farbtabelle eines Bildes werden als ARGB-Quadrupletts (QRgb) angegeben. Verwenden Sie die Funktionen qAlpha(), qRed(), qGreen() und qBlue(), um die Farbwertkomponenten zu erhalten.
Siehe auch setColor(), pixelIndex(), und Pixel Manipulation.
int QImage::colorCount() const
Gibt die Größe der Farbtabelle für das Bild zurück.
Beachten Sie, dass colorCount() für 32-bpp-Bilder 0 zurückgibt, da diese Bilder keine Farbtabellen verwenden, sondern Pixelwerte als ARGB-Quadrupletts kodieren.
Siehe auch setColorCount() und Image Information.
QColorSpace QImage::colorSpace() const
Gibt den Farbraum des Bildes zurück, wenn ein Farbraum definiert ist.
Siehe auch setColorSpace().
QList<QRgb> QImage::colorTable() const
Gibt eine Liste der Farben zurück, die in der Farbtabelle des Bildes enthalten sind, oder eine leere Liste, wenn das Bild keine Farbtabelle hat.
Siehe auch setColorTable(), colorCount(), und color().
[since 6.4]
QImage QImage::colorTransformed(const QColorTransform &transform) const &
Gibt die Bildfarbe zurück, die mit transform für alle Pixel des Bildes transformiert wurde.
Hinweis: Wenn transform einen Quellfarbraum hat, der mit dem Format dieses Bildes inkompatibel ist, wird QImage als Null zurückgegeben. Wenn transform einen Zielfarbraum hat, der mit dem Format dieses Bildes nicht kompatibel ist, wird das Bild ebenfalls in ein kompatibles Format umgewandelt. Für mehr Kontrolle über die Wahl des Zielpixelformats, siehe die Überladung dieser Methode mit drei Argumenten.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch applyColorTransform().
[since 6.8]
QImage QImage::colorTransformed(const QColorTransform &transform, QImage::Format toFormat, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
Gibt die Bildfarbe zurück, die mit transform auf alle Pixel im Bild transformiert wurde, und liefert ein Bild des Formats toFormat.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Formatkonvertierungsprozesses behandelt werden.
Hinweis: Wenn transform einen Quellfarbraum hat, der nicht mit dem Format dieses Bildes kompatibel ist, oder einen Zielfarbraum, der nicht mit toFormat kompatibel ist, wird QImage als Null zurückgegeben.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch applyColorTransform().
[since 6.4]
QImage QImage::colorTransformed(const QColorTransform &transform) &&
Dies ist eine überladene Funktion.
Gibt die Bildfarbe zurück, die mit transform auf alle Pixel des Bildes transformiert wurde.
Diese Funktion wurde in Qt 6.4 eingeführt.
Siehe auch applyColorTransform().
[since 6.8]
QImage QImage::colorTransformed(const QColorTransform &transform, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
Dies ist eine überladene Funktion.
Gibt die Bildfarbe zurück, die mit transform auf alle Pixel des Bildes transformiert wurde.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch applyColorTransform().
const uchar *QImage::constBits() const
Gibt einen Zeiger auf die ersten Pixeldaten zurück.
Beachten Sie, dass QImage eine implizite Datenfreigabe verwendet, diese Funktion jedoch keine Deep Copy der freigegebenen Pixeldaten durchführt, da die zurückgegebenen Daten konstant sind.
Siehe auch bits() und constScanLine().
const uchar *QImage::constScanLine(int i) const
Gibt einen Zeiger auf die Pixeldaten an der Scanline mit dem Index i zurück. Die erste Scanline ist bei Index 0.
Die Scanline-Daten sind mindestens 32-Bit-ausgerichtet. Bei 64-Bit-Formaten folgt sie der nativen Ausrichtung von 64-Bit-Ganzzahlen (64-Bit für die meisten Plattformen, aber vor allem 32-Bit auf i386).
Beachten Sie, dass QImage implizite Datenfreigabe verwendet, aber diese Funktion führt keine Deep Copy der freigegebenen Pixeldaten durch, da die zurückgegebenen Daten konstant sind.
Siehe auch scanLine() und constBits().
void QImage::convertTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor)
Konvertiert das Bild in die angegebene format an Ort und Stelle und löst es, falls nötig, ab.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Konvertierungsprozesses behandelt werden.
Siehe auch convertedTo().
void QImage::convertToColorSpace(const QColorSpace &colorSpace)
Konvertiert das Bild nach colorSpace.
Wenn das Bild keinen gültigen Farbraum hat, führt die Methode nichts aus.
Hinweis: Wenn colorSpace nicht mit dem aktuellen Format kompatibel ist, wird das Bild in ein entsprechendes Format konvertiert.
Siehe auch convertedToColorSpace() und setColorSpace().
[since 6.8]
void QImage::convertToColorSpace(const QColorSpace &colorSpace, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor)
Konvertiert das Bild nach colorSpace und format.
Wenn das Bild keinen gültigen Farbraum hat, führt die Methode nichts aus, ebenso wenig, wenn der Farbraum nicht mit dem Format kompatibel ist.
Die angegebene Bildkonvertierung flags steuert, wie die Bilddaten während des Formatkonvertierungsprozesses behandelt werden.
Diese Funktion wurde in Qt 6.8 eingeführt.
Siehe auch convertedToColorSpace() und setColorSpace().
QImage QImage::convertToFormat(QImage::Format format, const QList<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
Dies ist eine überladene Funktion.
Gibt eine Kopie des Bildes zurück, das in das angegebene format konvertiert wurde, unter Verwendung des angegebenen colorTable.
Die Konvertierung von RGB-Formaten in indizierte Formate ist ein langsamer Vorgang und verwendet einen einfachen Ansatz der nächsten Farbe ohne Dithering.
QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const
Gibt das in colorSpace konvertierte Bild zurück.
Wenn das Bild keinen gültigen Farbraum hat, wird ein Nullwert QImage zurückgegeben.
Hinweis: Wenn colorSpace nicht mit dem aktuellen Format kompatibel ist, wird das zurückgegebene Bild ebenfalls in ein solches Format konvertiert. Für mehr Kontrolle über das zurückgegebene Bildformat, siehe die Überladung dieser Methode mit drei Argumenten.
Siehe auch convertToColorSpace() und colorTransformed().
QImage QImage::copy(const QRect &rectangle = QRect()) const
Gibt einen Teilbereich des Bildes als neues Bild zurück.
Das zurückgegebene Bild wird von der Position (rectangle.x(), rectangle.y()) in diesem Bild kopiert und hat immer die Größe des angegebenen rectangle.
In Bereichen außerhalb dieses Bildes werden die Pixel auf 0 gesetzt. Bei 32-Bit-RGB-Bildern bedeutet dies Schwarz; bei 32-Bit-ARGB-Bildern bedeutet dies transparentes Schwarz; bei 8-Bit-Bildern bedeutet dies die Farbe mit dem Index 0 in der Farbtabelle, die alles sein kann; bei 1-Bit-Bildern bedeutet dies Qt::color0.
Wenn das angegebene rectangle ein Null-Rechteck ist, wird das gesamte Bild kopiert.
Siehe auch QImage().
QImage QImage::copy(int x, int y, int width, int height) const
Dies ist eine überladene Funktion.
Das zurückgegebene Bild wird von der Position (x, y) in diesem Bild kopiert und hat immer die angegebenen width und height. In Bereichen außerhalb dieses Bildes werden die Pixel auf 0 gesetzt.
QImage QImage::createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const
Erstellt eine 1-bpp-Maske aus dem Alphapuffer in diesem Bild und gibt sie zurück. Gibt ein Null-Bild zurück, wenn das Format des Bildes QImage::Format_RGB32 ist.
Das Argument flags ist eine bitweise ODER-Verknüpfung von Qt::ImageConversionFlags und steuert den Konvertierungsprozess. Die Übergabe von 0 für flags setzt alle Standardoptionen.
Das zurückgegebene Bild hat eine Little-Endian-Bitreihenfolge (d.h. das Format des Bildes ist QImage::Format_MonoLSB), die Sie mit der Funktion convertToFormat() in Big-Endian (QImage::Format_Mono) umwandeln können.
Siehe auch createHeuristicMask() und Image Transformations.
QImage QImage::createHeuristicMask(bool clipTight = true) const
Erstellt eine heuristische 1-bpp-Maske für dieses Bild und gibt sie zurück.
Die Funktion arbeitet, indem sie eine Farbe aus einer der Ecken auswählt und dann Pixel dieser Farbe beginnend an allen Rändern abschneidet. Die vier Ecken stimmen darüber ab, welche Farbe wegmaskiert werden soll. Im Falle eines Unentschiedens (das bedeutet im Allgemeinen, dass diese Funktion nicht auf das Bild anwendbar ist) ist das Ergebnis willkürlich.
Das zurückgegebene Bild hat eine Little-Endian-Bitfolge (d. h. das Bildformat ist QImage::Format_MonoLSB), die Sie mit der Funktion convertToFormat() in Big-Endian (QImage::Format_Mono) umwandeln können.
Wenn clipTight wahr ist (die Voreinstellung), ist die Maske gerade groß genug, um die Pixel abzudecken; andernfalls ist die Maske größer als die Datenpixel.
Beachten Sie, dass diese Funktion den Alphapuffer außer Acht lässt.
Siehe auch createAlphaMask() und Image Transformations.
QImage QImage::createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const
Erzeugt eine Maske für dieses Bild auf der Grundlage des angegebenen Werts color und gibt sie zurück. Wenn mode den Wert MaskInColor (Standardwert) hat, sind alle Pixel, die mit color übereinstimmen, undurchsichtige Pixel in der Maske. Wenn mode MaskOutColor ist, werden alle Pixel, die mit der angegebenen Farbe übereinstimmen, transparent sein.
Siehe auch createAlphaMask() und createHeuristicMask().
int QImage::depth() const
Gibt die Tiefe des Bildes zurück.
Die Bildtiefe ist die Anzahl der Bits, die zum Speichern eines einzelnen Pixels verwendet werden, auch Bits pro Pixel (bpp) genannt.
Die unterstützten Tiefen sind 1, 8, 16, 24, 32 und 64.
Siehe auch bitPlaneCount(), convertToFormat(), Image Formats, und Image Information.
[since 6.2]
QSizeF QImage::deviceIndependentSize() const
Gibt die Größe des Bildes in geräteunabhängigen Pixeln zurück.
Dieser Wert sollte verwendet werden, wenn die Bildgröße für die Berechnung der Größe der Benutzeroberfläche verwendet wird.
Der Rückgabewert ist äquivalent zu image.size() / image.devicePixelRatio().
Diese Funktion wurde in Qt 6.2 eingeführt.
qreal QImage::devicePixelRatio() const
Gibt das Gerätepixelverhältnis für das Bild zurück. Dies ist das Verhältnis zwischen Gerätepixeln und geräteunabhängigen Pixeln.
Verwenden Sie diese Funktion bei der Berechnung der Layout-Geometrie auf der Grundlage der Bildgröße: QSize layoutSize = image.size() / image.devicePixelRatio()
Der Standardwert ist 1.0.
Siehe auch setDevicePixelRatio() und QImageReader.
int QImage::dotsPerMeterX() const
Gibt die Anzahl der Pixel zurück, die horizontal in einen physischen Meter passen. Zusammen mit dotsPerMeterY() definiert diese Zahl den beabsichtigten Maßstab und das Seitenverhältnis des Bildes.
Siehe auch setDotsPerMeterX() und Image Information.
int QImage::dotsPerMeterY() const
Gibt die Anzahl der Pixel zurück, die vertikal in einen physischen Meter passen. Zusammen mit dotsPerMeterX() definiert diese Zahl den beabsichtigten Maßstab und das Seitenverhältnis des Bildes.
Siehe auch setDotsPerMeterY() und Image Information.
void QImage::fill(uint pixelValue)
Füllt das gesamte Bild mit der angegebenen pixelValue.
Wenn die Tiefe dieses Bildes 1 ist, wird nur das niedrigste Bit verwendet. Wenn Sie fill(0), fill(2), etc. sagen, wird das Bild mit 0en gefüllt. Wenn Sie fill(1), fill(3), usw. sagen, wird das Bild mit 1en gefüllt. Bei einer Tiefe von 8 werden die niedrigsten 8 Bits verwendet, bei einer Tiefe von 16 die niedrigsten 16 Bits.
Ist die Bildtiefe größer als 32 Bit, ist das Ergebnis undefiniert.
Hinweis: Es gibt keine entsprechenden Getter-Werte, obwohl QImage::pixelIndex() denselben Wert für indizierte Formate und QImage::pixel() für RGB32-, ARGB32- und ARGB32PM-Formate zurückgibt.
Siehe auch depth() und Image Transformations.
void QImage::fill(Qt::GlobalColor color)
Dies ist eine überladene Funktion.
Füllt das Bild mit der angegebenen color, beschrieben als globale Standardfarbe.
void QImage::fill(const QColor &color)
Dies ist eine überladene Funktion.
Füllt das gesamte Bild mit dem angegebenen color.
Wenn die Tiefe des Bildes 1 ist, wird das Bild mit 1 gefüllt, wenn color gleich Qt::color1 ist; andernfalls wird es mit 0 gefüllt.
Wenn die Tiefe des Bildes 8 ist, wird das Bild mit dem Index gefüllt, der color in der Farbtabelle entspricht, falls vorhanden; andernfalls wird es mit 0 gefüllt.
QImage::Format QImage::format() const
Gibt das Format des Bildes zurück.
Siehe auch Image Formats.
[static, since 6.2]
QImage QImage::fromData(QByteArrayView data, const char *format = nullptr)
Konstruiert ein Abbild aus dem angegebenen QByteArrayView data . Der Lader versucht, das Bild unter Verwendung des angegebenen format zu lesen. Wenn format nicht angegeben ist (was die Vorgabe ist), durchsucht der Lader die Daten nach einem Header, um das Dateiformat zu erraten.
Wenn format angegeben ist, muss es einer der Werte sein, die von QImageReader::supportedImageFormats() zurückgegeben werden.
Wenn das Laden des Bildes fehlschlägt, ist das zurückgegebene Bild ein Null-Bild.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch load(), save(), und Reading and Writing Image Files.
[static]
QImage QImage::fromData(const QByteArray &data, const char *format = nullptr)
Dies ist eine überladene Funktion.
Konstruiert ein QImage aus dem angegebenen QByteArray data .
[static]
QImage QImage::fromData(const uchar *data, int size, const char *format = nullptr)
Dies ist eine überladene Funktion.
Konstruiert eine QImage aus den ersten size Bytes der angegebenen binären data.
[static, since 6.0]
QImage QImage::fromHBITMAP(HBITMAP hbitmap)
Gibt eine QImage zurück, die der angegebenen hbitmap entspricht.
HBITMAP speichert keine Informationen über den Alphakanal.
Im Standardfall wird der Alphakanal ignoriert und ein völlig undurchsichtiges Bild erzeugt (typischerweise im Format QImage::Format_RGB32).
Es gibt jedoch Fälle, in denen der Alphakanal verwendet wird, z. B. bei Anwendungssymbolen oder Systray-Symbolen. In diesem Fall sollte reinterpretAsFormat(QImage::Format_ARGB32)
für das zurückgegebene Bild aufgerufen werden, um sicherzustellen, dass das Format korrekt ist.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch toHBITMAP() und reinterpretAsFormat().
[static, since 6.0]
QImage QImage::fromHICON(HICON icon)
Gibt eine QImage zurück, die der angegebenen icon entspricht.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch toHICON().
bool QImage::hasAlphaChannel() const
Gibt true
zurück, wenn das Bild ein Format hat, das den Alphakanal respektiert, andernfalls gibt es false
zurück.
Siehe auch Image Information.
int QImage::height() const
Gibt die Höhe des Bildes zurück.
Siehe auch Image Information.
void QImage::invertPixels(QImage::InvertMode mode = InvertRgb)
Invertiert alle Pixelwerte des Bildes.
Die angegebene Invertierung mode hat nur eine Bedeutung, wenn die Bildtiefe 32 beträgt. Die Vorgabe mode ist InvertRgb, wodurch der Alphakanal unverändert bleibt. Wenn mode auf InvertRgba steht, werden die Alphabits ebenfalls invertiert.
Die Invertierung eines 8-Bit-Bildes bedeutet, dass alle Pixel mit dem Farbindex i durch ein Pixel mit dem Farbindex 255 minus i ersetzt werden. Beachten Sie, dass die Farbtabelle nicht verändert wird.
Wenn das Bild einen vormultiplizierten Alphakanal hat, wird das Bild zuerst in ein nicht vormultipliziertes Bildformat konvertiert, um es zu invertieren, und dann zurück konvertiert.
Siehe auch Image Transformations.
bool QImage::isGrayscale() const
Für 32-Bit-Bilder ist diese Funktion äquivalent zu allGray().
Bei farbindizierten Bildern gibt diese Funktion true
zurück, wenn color(i) QRgb(i, i, i) für alle Indizes der Farbtabelle ist; andernfalls gibt sie false
zurück.
Siehe auch allGray() und Image Formats.
bool QImage::isNull() const
Gibt true
zurück, wenn es sich um ein Null-Bild handelt, andernfalls false
.
Bei einem Null-Bild sind alle Parameter auf Null gesetzt und es gibt keine zugewiesenen Daten.
bool QImage::load(const QString &fileName, const char *format = nullptr)
Lädt ein Bild aus der Datei mit der angegebenen fileName. Gibt true
zurück, wenn das Bild erfolgreich geladen wurde; andernfalls wird das Bild für ungültig erklärt und false
zurückgegeben.
Der Lader versucht, das Bild unter Verwendung des angegebenen format zu lesen, z. B. PNG oder JPG. Wenn format nicht angegeben ist (was die Vorgabe ist), wird es automatisch anhand des Suffixes und des Headers der Datei erkannt. Einzelheiten finden Sie unter QImageReader::setAutoDetectImageFormat().
Der Dateiname kann sich entweder auf eine tatsächliche Datei auf der Festplatte oder auf eine der eingebetteten Ressourcen der Anwendung beziehen. Siehe den Überblick über das Ressourcensystem für Details zum Einbetten von Bildern und anderen Ressourcendateien in die ausführbare Datei der Anwendung.
Siehe auch Reading and Writing Image Files.
bool QImage::load(QIODevice *device, const char *format)
Dies ist eine überladene Funktion.
Diese Funktion liest eine QImage aus der angegebenen device. Dies kann z.B. verwendet werden, um ein Bild direkt in eine QByteArray zu laden.
[since 6.2]
bool QImage::loadFromData(QByteArrayView data, const char *format = nullptr)
Lädt ein Bild von der angegebenen QByteArrayView data . Gibt true
zurück, wenn das Bild erfolgreich geladen wurde; andernfalls wird das Bild für ungültig erklärt und false
zurückgegeben.
Der Lader versucht, das Bild unter Verwendung des angegebenen format zu lesen, z. B. PNG oder JPG. Wenn format nicht angegeben ist (was der Standard ist), sucht der Lader in der Datei nach einem Header, um das Dateiformat zu erraten.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch Reading and Writing Image Files.
bool QImage::loadFromData(const QByteArray &data, const char *format = nullptr)
Dies ist eine überladene Funktion.
Lädt ein Bild aus dem angegebenen QByteArray data .
bool QImage::loadFromData(const uchar *data, int len, const char *format = nullptr)
Dies ist eine überladene Funktion.
Lädt ein Bild aus den ersten len Bytes der angegebenen Binärdatei data.
[since 6.0]
void QImage::mirror(bool horizontal = false, bool vertical = true)
Spiegelung des Bildes in horizontaler und/oder vertikaler Richtung, je nachdem ob horizontal und vertical auf true oder false gesetzt sind.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch mirrored() und Image Transformations.
QPoint QImage::offset() const
Gibt die Anzahl der Pixel zurück, um die das Bild bei der Positionierung relativ zu anderen Bildern versetzt werden soll.
Siehe auch setOffset() und Image Information.
QRgb QImage::pixel(const QPoint &position) const
Gibt die Farbe des Pixels an der angegebenen position zurück.
Wenn position nicht gültig ist, ist das Ergebnis undefiniert.
Warnung: Diese Funktion ist teuer, wenn sie für umfangreiche Pixelmanipulationen verwendet wird. Verwenden Sie constBits() oder constScanLine(), wenn viele Pixel gelesen werden müssen.
Siehe auch setPixel(), valid(), constBits(), constScanLine(), und Pixel Manipulation.
QRgb QImage::pixel(int x, int y) const
Dies ist eine überladene Funktion.
Gibt die Farbe des Pixels an den Koordinaten (x, y) zurück.
QColor QImage::pixelColor(const QPoint &position) const
Gibt die Farbe des Pixels am angegebenen position als QColor zurück.
Wenn position nicht gültig ist, wird ein ungültiger QColor zurückgegeben.
Warnung: Diese Funktion ist teuer, wenn sie für umfangreiche Pixelmanipulationen verwendet wird. Verwenden Sie constBits() oder constScanLine(), wenn viele Pixel gelesen werden müssen.
Siehe auch setPixelColor(), setPixel(), valid(), constBits(), constScanLine(), und Pixel Manipulation.
QColor QImage::pixelColor(int x, int y) const
Dies ist eine überladene Funktion.
Gibt die Farbe des Pixels an den Koordinaten (x, y) als QColor zurück.
[noexcept]
QPixelFormat QImage::pixelFormat() const
Gibt die QImage::Format als eine QPixelFormat
int QImage::pixelIndex(const QPoint &position) const
Gibt den Pixelindex an der angegebenen position zurück.
Ist position ungültig oder handelt es sich bei dem Bild nicht um ein Palettenbild (depth() > 8), ist das Ergebnis undefiniert.
Siehe auch valid(), depth(), und Pixel Manipulation.
int QImage::pixelIndex(int x, int y) const
Dies ist eine überladene Funktion.
Gibt den Pixelindex bei (x, y) zurück.
QRect QImage::rect() const
Gibt das umschließende Rechteck (0, 0, width(), height()) des Bildes zurück.
Siehe auch Image Information.
bool QImage::reinterpretAsFormat(QImage::Format format)
Ändert das Format des Bildes in format, ohne die Daten zu ändern. Funktioniert nur zwischen Formaten der gleichen Tiefe.
Gibt bei Erfolg true
zurück.
Diese Funktion kann verwendet werden, um Bilder mit Alphakanälen in ihre entsprechenden opaken Formate zu ändern, wenn bekannt ist, dass die Daten nur opak sind, oder um das Format eines gegebenen Bildpuffers zu ändern, bevor er mit neuen Daten überschrieben wird.
Warnung: Die Funktion prüft nicht, ob die Bilddaten im neuen Format gültig sind, und gibt immer noch true
zurück, wenn die Tiefen kompatibel sind. Operationen mit einem Bild mit ungültigen Daten sind undefiniert.
Warnung: Wenn das Bild nicht abgetrennt ist, werden die Daten kopiert.
Siehe auch hasAlphaChannel() und convertToFormat().
[since 6.0]
void QImage::rgbSwap()
Vertauscht die Werte der roten und blauen Komponenten aller Pixel und konvertiert damit ein RGB-Bild in ein BGR-Bild.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch rgbSwapped() und Image Transformations.
bool QImage::save(const QString &fileName, const char *format = nullptr, int quality = -1) const
Speichert das Bild in der Datei mit dem angegebenen fileName, unter Verwendung der angegebenen Bilddatei format und des quality Faktors. Wenn format nullptr
ist, versucht QImage, das Format anhand des Suffixes von fileName zu erraten.
Der Faktor quality muss im Bereich von 0 bis 100 oder -1 liegen. Geben Sie 0 an, um kleine komprimierte Dateien zu erhalten, 100 für große unkomprimierte Dateien, und -1 (die Vorgabe), um die Standardeinstellungen zu verwenden.
Gibt true
zurück, wenn das Bild erfolgreich gespeichert wurde; andernfalls wird false
zurückgegeben.
Siehe auch Reading and Writing Image Files.
bool QImage::save(QIODevice *device, const char *format = nullptr, int quality = -1) const
Dies ist eine überladene Funktion.
Diese Funktion schreibt ein QImage in die angegebene device.
Dies kann z.B. verwendet werden, um ein Bild direkt in eine QByteArray zu speichern:
QImage image; QByteArray ba; QBuffer buffer(&ba); buffer.open(QIODevice::WriteOnly); image.save(&buffer, "PNG"); // writes image into ba in PNG format
QImage QImage::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
Gibt eine Kopie des Bildes zurück, die auf ein Rechteck skaliert ist, das durch das angegebene size gemäß den Angaben aspectRatioMode und transformMode definiert ist.
- Wenn aspectRatioMode gleich Qt::IgnoreAspectRatio ist, wird das Bild auf size skaliert.
- Wenn aspectRatioMode gleich Qt::KeepAspectRatio ist, wird das Bild auf ein Rechteck skaliert, das so groß wie möglich innerhalb von size ist, wobei das Seitenverhältnis beibehalten wird.
- Wenn aspectRatioMode gleich Qt::KeepAspectRatioByExpanding ist, wird das Bild auf ein möglichst kleines Rechteck außerhalb von size skaliert, wobei das Seitenverhältnis beibehalten wird.
Wenn die angegebene size leer ist, gibt diese Funktion ein Null-Bild zurück.
Siehe auch isNull() und Image Transformations.
QImage QImage::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
Dies ist eine überladene Funktion.
Gibt eine Kopie des Bildes zurück, das auf ein Rechteck mit den angegebenen width und height entsprechend den angegebenen aspectRatioMode und transformMode skaliert ist.
Wenn entweder width oder height Null oder negativ ist, gibt diese Funktion ein Null-Bild zurück.
QImage QImage::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
Gibt eine skalierte Kopie des Bildes zurück. Das zurückgegebene Bild wird unter Verwendung der angegebenen Transformation mode auf das angegebene height skaliert.
Diese Funktion berechnet automatisch die Breite des Bildes, so dass das Verhältnis des Bildes erhalten bleibt.
Wenn die angegebene height 0 oder negativ ist, wird ein Null-Bild zurückgegeben.
Siehe auch Image Transformations.
QImage QImage::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
Gibt eine skalierte Kopie des Bildes zurück. Das zurückgegebene Bild wird unter Verwendung der angegebenen Transformation mode auf das angegebene width skaliert.
Diese Funktion berechnet automatisch die Höhe des Bildes, so dass sein Seitenverhältnis erhalten bleibt.
Wenn die angegebene width 0 oder negativ ist, wird ein Null-Bild zurückgegeben.
Siehe auch Image Transformations.
uchar *QImage::scanLine(int i)
Gibt einen Zeiger auf die Pixeldaten an der Scanline mit dem Index i zurück. Die erste Scanline ist bei Index 0.
Die Scanline-Daten sind mindestens 32-Bit-ausgerichtet. Bei 64-Bit-Formaten folgt sie der nativen Ausrichtung von 64-Bit-Ganzzahlen (64-Bit für die meisten Plattformen, aber vor allem 32-Bit auf i386).
Zum Beispiel, um die grüne Komponente jedes Pixels in einem Bild zu entfernen:
for (int y = 0; y < image.height(); ++y) { QRgb *line = reinterpret_cast<QRgb*>(image.scanLine(y)); for (int x = 0; x < image.width(); ++x) { QRgb &rgb = line[x]; rgb = qRgba(qRed(rgb), qGreen(0), qBlue(rgb), qAlpha(rgb)); } }
Warnung: Wenn Sie auf 32-Bit-Bilddaten zugreifen, wandeln Sie den zurückgegebenen Zeiger in QRgb*
um (QRgb hat eine 32-Bit-Größe) und verwenden Sie ihn zum Lesen/Schreiben des Pixelwerts. Sie können den Zeiger uchar*
nicht direkt verwenden, da das Pixelformat von der Byte-Reihenfolge auf der zugrunde liegenden Plattform abhängt. Verwenden Sie qRed(), qGreen(), qBlue() und qAlpha() für den Zugriff auf die Pixel.
Siehe auch bytesPerLine(), bits(), Pixel Manipulation, und constScanLine().
const uchar *QImage::scanLine(int i) const
Dies ist eine überladene Funktion.
void QImage::setAlphaChannel(const QImage &alphaChannel)
Setzt den Alphakanal dieses Bildes auf den angegebenen alphaChannel.
Wenn alphaChannel ein 8-Bit-Alpha-Bild ist, werden die Alpha-Werte direkt verwendet. Andernfalls wird alphaChannel in 8-Bit-Graustufen umgewandelt und die Intensität der Pixelwerte verwendet.
Wenn das Bild bereits einen Alphakanal hat, wird der vorhandene Alphakanal mit dem neuen multipliziert. Wenn das Bild keinen Alphakanal hat, wird es in ein entsprechendes Format umgewandelt.
Der Vorgang ähnelt dem Malen von alphaChannel als Alphabild über dieses Bild mit QPainter::CompositionMode_DestinationIn
.
Siehe auch hasAlphaChannel(), Image Transformations, und Image Formats.
void QImage::setColor(int index, QRgb colorValue)
Setzt die Farbe an der angegebenen index in der Farbtabelle auf den an colorValue angegebenen Wert. Der Farbwert ist ein ARGB-Quadruplet.
Wenn index außerhalb der aktuellen Größe der Farbtabelle liegt, wird sie mit setColorCount() erweitert.
Siehe auch color(), colorCount(), setColorTable(), und Pixel Manipulation.
void QImage::setColorCount(int colorCount)
Ändert die Größe der Farbtabelle so, dass sie colorCount Einträge enthält.
Wenn die Farbtabelle erweitert wird, werden alle zusätzlichen Farben auf transparent gesetzt (d. h. qRgba(0, 0, 0, 0)).
Wenn das Bild verwendet wird, muss die Farbtabelle groß genug sein, um Einträge für alle im Bild vorhandenen Pixel-/Indexwerte zu haben, sonst sind die Ergebnisse undefiniert.
Siehe auch colorCount(), colorTable(), setColor(), und Image Transformations.
void QImage::setColorSpace(const QColorSpace &colorSpace)
Stellt den Bildfarbraum auf colorSpace ein, ohne irgendwelche Konvertierungen an den Bilddaten vorzunehmen.
Siehe auch colorSpace().
void QImage::setColorTable(const QList<QRgb> &colors)
Setzt die Farbtabelle, die zur Übersetzung von Farbindizes in QRgb Werte verwendet wird, auf die angegebene colors.
Wenn das Bild verwendet wird, muss die Farbtabelle groß genug sein, um Einträge für alle im Bild vorhandenen Pixel-/Indexwerte zu haben, sonst sind die Ergebnisse undefiniert.
Siehe auch colorTable(), setColor(), und Image Transformations.
void QImage::setDevicePixelRatio(qreal scaleFactor)
Legt das Gerätepixelverhältnis für das Bild fest. Dies ist das Verhältnis zwischen Bildpixeln und geräteunabhängigen Pixeln.
Der Standardwert scaleFactor ist 1,0. Eine andere Einstellung hat zwei Auswirkungen:
QPainter, die auf dem Bild geöffnet werden, werden skaliert. Zum Beispiel wird das Malen auf einem 200x200 Bild mit einem Verhältnis von 2.0 zu einer effektiven (geräteunabhängigen) Malfläche von 100x100 führen.
Code-Pfade in Qt, die die Layout-Geometrie basierend auf der Bildgröße berechnen, berücksichtigen das Verhältnis: QSize layoutSize = image.size() / image.devicePixelRatio() Der Nettoeffekt davon ist, dass das Bild als High-DPI-Bild und nicht als großes Bild angezeigt wird (siehe Drawing High Resolution Versions of Pixmaps and Images).
Siehe auch devicePixelRatio() und deviceIndependentSize().
void QImage::setDotsPerMeterX(int x)
Setzt die Anzahl der Pixel, die horizontal in einen physischen Meter passen, auf x.
Zusammen mit dotsPerMeterY() definiert diese Zahl den beabsichtigten Maßstab und das Seitenverhältnis des Bildes und bestimmt den Maßstab, in dem QPainter Grafiken auf dem Bild zeichnet. Sie ändert nicht den Maßstab oder das Seitenverhältnis des Bildes, wenn es auf anderen Zeichengeräten wiedergegeben wird.
Siehe auch dotsPerMeterX() und Image Information.
void QImage::setDotsPerMeterY(int y)
Setzt die Anzahl der Pixel, die vertikal in einen physischen Meter passen, auf y.
Zusammen mit dotsPerMeterX() definiert diese Zahl den beabsichtigten Maßstab und das Seitenverhältnis des Bildes und bestimmt den Maßstab, in dem QPainter Grafiken auf das Bild zeichnet. Sie ändert nicht den Maßstab oder das Seitenverhältnis des Bildes, wenn es auf anderen Zeichengeräten wiedergegeben wird.
Siehe auch dotsPerMeterY() und Image Information.
void QImage::setOffset(const QPoint &offset)
Setzt die Anzahl der Pixel, um die das Bild bei der Positionierung relativ zu anderen Bildern versetzt werden soll, auf offset.
Siehe auch offset() und Image Information.
void QImage::setPixel(const QPoint &position, uint index_or_rgb)
Setzt den Pixelindex oder die Farbe am angegebenen position auf index_or_rgb.
Ist das Bildformat entweder einfarbig oder palettiert, muss der angegebene index_or_rgb Wert ein Index in der Farbtabelle des Bildes sein, andernfalls muss der Parameter ein QRgb Wert sein.
Wenn position kein gültiges Koordinatenpaar im Bild ist, oder wenn index_or_rgb >= colorCount() im Fall von einfarbigen und palettierten Bildern, ist das Ergebnis undefiniert.
Warnung: Diese Funktion ist aufgrund des Aufrufs der darin enthaltenen internen Funktion detach()
teuer; wenn die Leistung ein Problem darstellt, empfehlen wir die Verwendung von scanLine() oder bits() für den direkten Zugriff auf Pixeldaten.
Siehe auch pixel() und Pixel Manipulation.
void QImage::setPixel(int x, int y, uint index_or_rgb)
Dies ist eine überladene Funktion.
Setzt den Pixelindex oder die Farbe an (x, y) auf index_or_rgb.
void QImage::setPixelColor(const QPoint &position, const QColor &color)
Setzt die Farbe an der angegebenen position auf color.
Wenn position kein gültiges Koordinatenpaar im Bild ist oder das Bildformat entweder monochrom oder palettiert ist, ist das Ergebnis undefiniert.
Warnung: Diese Funktion ist aufgrund des Aufrufs der darin enthaltenen internen Funktion detach()
teuer; wenn die Leistung ein Problem darstellt, empfehlen wir die Verwendung von scanLine() oder bits() für den direkten Zugriff auf Pixeldaten.
Siehe auch pixelColor(), pixel(), bits(), scanLine(), und Pixel Manipulation.
void QImage::setPixelColor(int x, int y, const QColor &color)
Dies ist eine überladene Funktion.
Setzt die Pixelfarbe bei (x, y) auf color.
void QImage::setText(const QString &key, const QString &text)
Setzt den Bildtext auf den angegebenen text und verknüpft ihn mit dem angegebenen key.
Wenn Sie nur einen einzelnen Textblock (z. B. einen "Kommentar" oder eine Beschreibung) speichern möchten, können Sie entweder einen leeren Schlüssel übergeben oder einen allgemeinen Schlüssel wie "Beschreibung" verwenden.
Der Bildtext wird in die Bilddaten eingebettet, wenn Sie save() oder QImageWriter::write() aufrufen.
Nicht alle Bildformate unterstützen eingebetteten Text. Sie können herausfinden, ob ein bestimmtes Bild oder Format die Einbettung von Text unterstützt, indem Sie QImageWriter::supportsOption() verwenden. Wir geben ein Beispiel:
QImageWriter writer; writer.setFormat("png"); if (writer.supportsOption(QImageIOHandler::Beschreibung)) qDebug() << "Png supports embedded text";
Sie können QImageWriter::supportedImageFormats() verwenden, um herauszufinden, welche Bildformate Ihnen zur Verfügung stehen.
Siehe auch text() und textKeys().
QSize QImage::size() const
Gibt die Größe des Bildes zurück, d. h. seine width() und height().
Siehe auch Image Information und deviceIndependentSize().
qsizetype QImage::sizeInBytes() const
Gibt die Größe der Bilddaten in Bytes zurück.
Siehe auch bytesPerLine(), bits(), und Image Information.
[noexcept]
void QImage::swap(QImage &other)
Tauscht dieses Bild mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QString QImage::text(const QString &key = QString()) const
Gibt den Bildtext zurück, der mit dem angegebenen key verknüpft ist. Wenn die angegebene key eine leere Zeichenkette ist, wird der gesamte Bildtext zurückgegeben, wobei jedes Schlüssel-Text-Paar durch einen Zeilenumbruch getrennt ist.
Siehe auch setText() und textKeys().
QStringList QImage::textKeys() const
Gibt die Textschlüssel für dieses Bild zurück.
Sie können diese Schlüssel mit text() verwenden, um den Bildtext für einen bestimmten Schlüssel aufzulisten.
Siehe auch text().
CGImageRef QImage::toCGImage() const
Erzeugt ein CGImage
Äquivalent zu diesem QImage und gibt ein CGImageRef
Handle zurück.
Die zurückgegebene CGImageRef nimmt an der QImage impliziten gemeinsamen Nutzung teil und enthält einen Verweis auf die QImage Daten. CGImage ist unveränderlich und wird niemals die QImage lösen. Das Schreiben auf die QImage wird wie üblich gelöst.
Diese Funktion ist schnell und kopiert oder konvertiert keine Bilddaten.
Die folgenden Bildformate werden unterstützt und werden auf einen entsprechenden nativen Bildtyp abgebildet:
Qt | CoreGraphics |
---|---|
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 |
Andere Formate werden nicht unterstützt; diese Funktion gibt in solchen Fällen eine null CGImageRef zurück. Benutzer dieser Funktion können dann die QImage zunächst in ein unterstütztes Format konvertieren, zum Beispiel Format_ARGB32_Premultiplied.
Der CGImageRef-Farbraum ist auf den sRGB-Farbraum eingestellt.
[since 6.0]
HBITMAP QImage::toHBITMAP() const
Erzeugt ein HBITMAP
Äquivalent des QImage.
Gibt das HBITMAP
-Handle zurück.
Es liegt in der Verantwortung des Aufrufers, die Daten von HBITMAP
nach der Verwendung freizugeben.
Für die Verwendung mit Standard-GDI-Aufrufen, wie BitBlt()
, sollte das Bild das Format QImage::Format_RGB32 haben.
Wenn die resultierende HBITMAP für die GDI-Funktion AlphaBlend()
verwendet wird, sollte das Bild das Format QImage::Format_ARGB32_Premultiplied haben (verwenden Sie convertToFormat()).
Wenn Sie die resultierende HBITMAP als Anwendungssymbol oder Systray-Symbol verwenden, sollte das Bild das Format QImage::Format_ARGB32 haben.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch fromHBITMAP() und convertToFormat().
[since 6.0]
HICON QImage::toHICON(const QImage &mask = {}) const
Erzeugt ein HICON
-Äquivalent von QPixmap unter Anwendung der Maske mask.
Wenn mask nicht null ist, muss es das Format QImage::Format_Mono haben. Gibt das HICON
-Handle zurück.
Es liegt in der Verantwortung des Aufrufers, die Daten von HICON
nach Gebrauch wieder freizugeben.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch fromHICON().
[static noexcept]
QImage::Format QImage::toImageFormat(QPixelFormat format)
Konvertiert format in eine QImage::Format
[static noexcept]
QPixelFormat QImage::toPixelFormat(QImage::Format format)
Konvertiert format in eine QPixelFormat
QImage QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
Gibt eine Kopie des Bildes zurück, die mit der angegebenen Transformation matrix und Transformation mode transformiert wurde.
Das zurückgegebene Bild hat normalerweise das gleiche {Bildformate}{format} wie das Originalbild. Eine komplexe Transformation kann jedoch zu einem Bild führen, bei dem nicht alle Pixel von den transformierten Pixeln des Originalbildes abgedeckt werden. In solchen Fällen wird den Hintergrundpixeln ein transparenter Farbwert zugewiesen, und das transformierte Bild erhält ein Format mit einem Alphakanal, auch wenn das Originalbild diesen nicht hatte.
Die Transformation matrix wird intern angepasst, um unerwünschte Verschiebungen zu kompensieren, d. h. das erzeugte Bild ist das kleinste Bild, das alle transformierten Punkte des Originalbildes enthält. Verwenden Sie die Funktion trueMatrix(), um die tatsächliche Matrix abzurufen, die für die Transformation eines Bildes verwendet wird.
Im Gegensatz zu den anderen Überladungen kann diese Funktion verwendet werden, um perspektivische Transformationen an Bildern durchzuführen.
Siehe auch trueMatrix() und Image Transformations.
[static]
QTransform QImage::trueMatrix(const QTransform &matrix, int width, int height)
Gibt die tatsächliche Matrix zurück, die für die Transformation eines Bildes mit den angegebenen width, height und matrix verwendet wird.
Bei der Transformation eines Bildes mit der Funktion transformed() wird die Transformationsmatrix intern angepasst, um unerwünschte Verschiebungen auszugleichen, d. h. transformed() gibt das kleinste Bild zurück, das alle transformierten Punkte des Originalbildes enthält. Diese Funktion gibt die modifizierte Matrix zurück, die die Punkte des Originalbildes korrekt auf das neue Bild abbildet.
Im Gegensatz zu den anderen Überladungen erzeugt diese Funktion Transformationsmatrizen, die zur Durchführung von perspektivischen Transformationen an Bildern verwendet werden können.
Siehe auch transformed() und Image Transformations.
bool QImage::valid(const QPoint &pos) const
Gibt true
zurück, wenn pos ein gültiges Koordinatenpaar innerhalb des Bildes ist; andernfalls wird false
zurückgegeben.
Siehe auch rect() und QRect::contains().
bool QImage::valid(int x, int y) const
Dies ist eine überladene Funktion.
Gibt true
zurück, wenn QPoint(x, y) ein gültiges Koordinatenpaar innerhalb des Bildes ist; andernfalls gibt sie false
zurück.
int QImage::width() const
Gibt die Breite des Bildes zurück.
Siehe auch Image Information.
QVariant QImage::operator QVariant() const
Gibt das Bild als QVariant zurück.
bool QImage::operator!=(const QImage &image) const
Gibt true
zurück, wenn dieses Bild und das angegebene image unterschiedliche Inhalte haben; andernfalls wird false
zurückgegeben.
Der Vergleich kann langsam sein, es sei denn, es gibt einen offensichtlichen Unterschied, wie z. B. unterschiedliche Breiten, in diesem Fall gibt die Funktion schnell zurück.
Siehe auch operator=().
[noexcept]
QImage &QImage::operator=(QImage &&other)
Verschieben - weist other dieser QImage Instanz zu.
QImage &QImage::operator=(const QImage &image)
Weist diesem Bild eine oberflächliche Kopie des angegebenen image zu und gibt einen Verweis auf dieses Bild zurück.
Weitere Informationen über flache Kopien finden Sie in der Dokumentation Implicit Data Sharing.
Siehe auch copy() und QImage().
bool QImage::operator==(const QImage &image) const
Gibt true
zurück, wenn dieses Bild und das angegebene image den gleichen Inhalt haben; andernfalls false
.
Der Vergleich kann langsam sein, es sei denn, es gibt einen offensichtlichen Unterschied (z. B. unterschiedliche Größe oder Format), in diesem Fall wird die Funktion schnell zurückkehren.
Siehe auch operator=().
Verwandte Nicht-Mitglieder
QImageCleanupFunction
Eine Funktion mit der folgenden Signatur, die zur Implementierung der grundlegenden Bildspeicherverwaltung verwendet werden kann:
void myImageCleanupHandler(void *info);
QDataStream &operator<<(QDataStream &stream, const QImage &image)
Schreibt die angegebene image in die angegebene stream als PNG-Bild oder als BMP-Bild, wenn die Version des Streams 1 ist. Beachten Sie, dass das Schreiben des Streams in eine Datei keine gültige Bilddatei erzeugen wird.
Siehe auch QImage::save() und Serialisierung von Qt-Datentypen.
QDataStream &operator>>(QDataStream &stream, QImage &image)
Liest ein Bild aus der angegebenen stream und speichert es in der angegebenen image.
Siehe auch QImage::load() und Serialisierung von Qt-Datentypen.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.