Класс QImage
Класс QImage предоставляет аппаратно-независимое представление изображения, позволяющее получить прямой доступ к данным пикселей, и может использоваться в качестве устройства рисования. Подробнее...
| Заголовок: | #include <QImage> |
| qmake: | QT += gui |
| Наследует: | QPaintDevice |
Примечание: Все функции в этом классе являются взаимоисключающими.
Типы публичного доступа
| Перечисление | Формат { Недействительный_формат, Монохромный, МонохромныйLSB, Индексированный8, RGB32, …, BGR888 } |
| Перечисление | Режим_инверсии { ИнвертироватьRGB, ИнвертироватьRGBA } |
Публичные функции
| QImage(QImage &&other) | |
| QImage(const QImage &image) | |
| QImage(const QString &fileName, const char *format = nullptr) | |
| QImage(const char *const [] xpm) | |
| QImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
| QImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr) | |
| 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(int width, int height, QImage::Format format) | |
| QImage(const QSize &size, QImage::Format format) | |
| QImage() | |
| QImage & | operator=(QImage &&other) |
| QImage & | operator=(const QImage &image) |
| virtual | ~QImage() |
| bool | allGray() const |
| void | applyColorTransform(const QColorTransform &transform) |
| int | bitPlaneCount() const |
| uchar * | bits() |
| const uchar * | bits() const |
| int | bytesPerLine() const |
| qint64 | cacheKey() const |
| QRgb | color(int i) const |
| int | colorCount() const |
| QColorSpace | colorSpace() const |
| QVector<QRgb> | colorTable() const |
| 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) |
| QImage | convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const & |
| QImage | convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) && |
| QImage | convertToFormat(QImage::Format format, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const |
| QImage | convertedToColorSpace(const QColorSpace &colorSpace) 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 |
| qreal | devicePixelRatio() const |
| int | dotsPerMeterX() const |
| int | dotsPerMeterY() const |
| void | fill(uint pixelValue) |
| void | fill(const QColor &color) |
| void | fill(Qt::GlobalColor 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) |
| bool | loadFromData(const uchar *data, int len, const char *format = nullptr) |
| bool | loadFromData(const QByteArray &data, const char *format = nullptr) |
| QImage | mirrored(bool horizontal = ..., bool vertical = ...) const & |
| QImage && | mirrored(bool horizontal = ..., bool vertical = ...) && |
| 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) |
| QImage | rgbSwapped() const & |
| QImage && | rgbSwapped() && |
| 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 | setColor(int index, QRgb colorValue) |
| void | setColorCount(int colorCount) |
| void | setColorSpace(const QColorSpace &colorSpace) |
| void | setColorTable(const QVector<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 |
| QImage | transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) 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 |
| bool | operator==(const QImage &image) const |
Статические публичные члены
| QImage | fromData(const uchar *data, int size, const char *format = nullptr) |
| QImage | fromData(const QByteArray &data, const char *format = nullptr) |
| QImage::Format | toImageFormat(QPixelFormat format) |
| QPixelFormat | toPixelFormat(QImage::Format format) |
| QMatrix | trueMatrix(const QMatrix &matrix, int width, int height) |
| QTransform | trueMatrix(const QTransform &matrix, int width, int height) |
Защищенные функции
| QImage | smoothScaled(int w, int h) const |
Связанные нечлены
| typedef | QImageCleanupFunction |
| QDataStream & | operator<<(QDataStream &stream, const QImage &image) |
| QDataStream & | operator>>(QDataStream &stream, QImage &image) |
Подробное описание
Qt предоставляет четыре класса для работы с данными изображений: QImage, QPixmap, QBitmap и QPicture. QImage оптимизирован для ввода-вывода и прямого доступа к пикселям, а QPixmap — для отображения изображений на экране. QBitmap — это всего лишь удобный класс, наследующий QPixmap, обеспечивающий глубину 1. Наконец, класс QPicture — это устройство отрисовки, которое записывает и воспроизводит команды QPainter.
Поскольку QImage является подклассом QPaintDevice, QPainter может использоваться для непосредственной отрисовки на изображениях. При использовании QPainter с QImage отрисовка может выполняться в другом потоке, отличном от текущего графического потока.
Класс QImage поддерживает несколько форматов изображений, описанных перечислением Format. К ним относятся монохромные, 8-битные, 32-битные и изображения с альфа-каналом, доступные во всех версиях Qt 4.x.
QImage предоставляет набор функций для получения различной информации об изображении. Также существуют несколько функций для преобразования изображения.
Объекты QImage могут передаваться по значению, так как класс QImage использует неявное совместное использование данных. Объекты QImage также могут быть переданы в поток и сравнены.
Примечание: Если вы хотите загружать объекты QImage в статическом сборке Qt, обратитесь к Руководству по плагинам.
Предупреждение: Отрисовка на QImage с форматом QImage::Format_Indexed8 не поддерживается.
Чтение и запись файлов изображений
QImage предоставляет несколько способов загрузки файла изображения: файл можно загрузить при создании объекта QImage или с помощью функций load() или loadFromData() позже. QImage также предоставляет статическую функцию fromData(), создающую QImage из заданных данных. При загрузке изображения имя файла может ссылаться на фактический файл на диске или на один из встроенных ресурсов приложения. См. обзор Системы ресурсов Qt для получения подробностей о том, как встроить изображения и другие файлы ресурсов в исполняемый файл приложения.
Просто вызовите функцию save() для сохранения объекта QImage.
Полный список поддерживаемых форматов файлов доступен через функции QImageReader::supportedImageFormats() и QImageWriter::supportedImageFormats(). Новые форматы файлов могут быть добавлены как плагины. По умолчанию Qt поддерживает следующие форматы:
| Формат | Описание | Поддержка Qt |
|---|---|---|
| BMP | Windows Bitmap | Чтение/запись |
| GIF | Graphic Interchange Format (необязательно) | Чтение |
| JPG | Joint Photographic Experts Group | Чтение/запись |
| JPEG | Joint Photographic Experts Group | Чтение/запись |
| PNG | Portable Network Graphics | Чтение/запись |
| PBM | Portable Bitmap | Чтение |
| PGM | Portable Graymap | Чтение |
| PPM | Portable Pixmap | Чтение/запись |
| XBM | X11 Bitmap | Чтение/запись |
| XPM | X11 Pixmap | Чтение/запись |
Информация об изображении
QImage предоставляет набор функций для получения различной информации об изображении:
| Доступные функции | |
|---|---|
| Геометрия | Функции size(), width(), height(), dotsPerMeterX() и dotsPerMeterY() предоставляют информацию о размерах и соотношении сторон изображения. Функция rect() возвращает охватывающий прямоугольник изображения. Функция valid() сообщает, находится ли заданная пара координат внутри этого прямоугольника. Функция offset() возвращает количество пикселей, на которое изображение должно смещаться при позиционировании относительно других изображений, что также можно изменить с помощью функции setOffset(). |
| Цвета | Цвет пикселя можно получить, передав его координаты в функцию pixel(). Функция pixel() возвращает цвет как значение QRgb независимо от формата изображения. В случае монохромных и 8-битных изображений функции colorCount() и colorTable() предоставляют информацию о компонентах цвета, используемых для хранения данных изображения: функция colorTable() возвращает всю таблицу цветов изображения. Чтобы получить отдельную запись, используйте функцию pixelIndex() для получения индекса пикселя для заданной пары координат, а затем функцию color() для получения цвета. Обратите внимание, что если вы создаете 8-битное изображение вручную, вы также должны установить корректную таблицу цветов изображения. Функция hasAlphaChannel() сообщает, учитывает ли формат изображения альфа-канал. Функции allGray() и isGrayscale() сообщают, являются ли все цвета изображения оттенками серого. См. также разделы Обработка пикселей и Преобразования изображений. |
| Текст | Функция text() возвращает текст изображения, связанный с заданным ключом текста. Ключи текста изображения можно получить с помощью функции textKeys(). Используйте функцию setText() для изменения текста изображения. |
| Информация низкого уровня | Функция depth() возвращает глубину изображения. Поддерживаемые глубины составляют 1 (монохромный), 8, 16, 24 и 32 бита. Функция bitPlaneCount() указывает, сколько из этих битов используется. Более подробная информация приведена в разделе Форматы изображений. Функции format(), bytesPerLine() и sizeInBytes() предоставляют информацию низкого уровня о данных, хранящихся в изображении. Функция cacheKey() возвращает число, которое уникально идентифицирует содержимое этого объекта QImage. |
Обработка пикселей
Функции, используемые для обработки пикселей изображения, зависят от формата изображения. Причина в том, что монохромные и 8-битные изображения основаны на индексах и используют таблицу поиска цветов, а 32-битные изображения хранят значения ARGB напрямую. Более подробная информация о форматах изображений приведена в разделе Форматы изображений.
В случае 32-битного изображения функцию setPixel() можно использовать для изменения цвета пикселя в заданных координатах на любой другой цвет, указанный как набор ARGB. Для создания соответствующего значения QRgb используйте функцию qRgb() (добавление стандартного альфа-компонента к заданным значениям RGB, т.е. создание непрозрачного цвета) или qRgba(). Например:
| 32-битный | |
|---|---|
QImage image(3, 3, QImage::Format_RGB32); QRgb value; value = qRgb(189, 149, 39); // 0xffbd9527 image.setPixel(1, 1, value); value = qRgb(122, 163, 39); // 0xff7aa327 image.setPixel(0, 1, value); image.setPixel(1, 0, value); value = qRgb(237, 187, 51); // 0xffedba31 image.setPixel(2, 1, value); |
|
В случае 8-битных и монохромных изображений значение пикселя является только индексом из таблицы цветов изображения. Таким образом, функцию setPixel() можно использовать только для изменения цвета пикселя в заданных координатах на предопределенный цвет из таблицы цветов изображения, т.е. она может только изменить индекс значения пикселя. Для изменения или добавления цвета в таблицу цветов изображения используйте функцию setColor().
Запись в таблице цветов — это набор ARGB, закодированный как значение QRgb. Используйте функции qRgb() и qRgba() для создания подходящего значения QRgb для использования с функцией setColor(). Например:
| 8-битный | |
|---|---|
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); |
|
Для изображений с более чем 8 битами на цветовой канал можно использовать методы setPixelColor() и pixelColor() для установки и получения значений с помощью QColor.
QImage также предоставляет функцию scanLine(), которая возвращает указатель на данные пикселей в строке сканирования с заданным индексом, и функцию bits(), которая возвращает указатель на первые данные пикселей (это эквивалентно scanLine(0)).
Форматы изображений
Каждый пиксель, хранящийся в QImage, представлен целым числом. Размер целого числа зависит от формата. QImage поддерживает несколько форматов изображений, описанных в перечислении Format.
Монохромные изображения хранятся с использованием индексов 1 бита в таблице цветов с не более чем двумя цветами. Существуют два типа монохромных изображений: с порядком битов big endian (старший бит впереди) или little endian (младший бит впереди).
8-битные изображения хранятся с использованием 8-битных индексов в таблице цветов, т.е. у них один байт на пиксель. Таблица цветов — это QVector<QRgb>, а QRgb — это тип данных, эквивалентный беззнаковому целому числу, содержащему набор ARGB с форматом 0xAARRGGBB.
32-битные изображения не имеют таблицы цветов; вместо этого каждый пиксель содержит значение QRgb. Существуют три разных типа 32-битных изображений, хранящих значения RGB (т. е. 0xffRRGGBB), ARGB и предварительно умноженные ARGB соответственно. В предварительно умноженном формате красные, зелёные и синие каналы умножаются на альфа-компонент, делённый на 255.
Формат изображения можно получить, используя функцию format(). Используйте функции convertToFormat(), чтобы преобразовать изображение в другой формат. Функции allGray() и isGrayscale() показывают, можно ли безопасно преобразовать цветное изображение в градацию серого.
Преобразования изображений
QImage поддерживает ряд функций для создания нового изображения, являющегося преобразованной версией исходного: функция createAlphaMask() создаёт и возвращает маску 1 бит из буфера альфа-канала этого изображения, а функция createHeuristicMask() создаёт и возвращает 1-битовую эвристическую маску для этого изображения. Последняя функция работает, выбирая цвет из одного из углов, а затем отсекает пиксели этого цвета, начиная с всех краёв.
Функция mirrored() возвращает зеркальное отображение изображения в желаемом направлении, функция scaled() возвращает копию изображения, масштабированную до прямоугольника с желаемыми размерами, а функция rgbSwapped() строит BGR-изображение из RGB-изображения.
Функции scaledToWidth() и scaledToHeight() возвращают масштабированные копии изображения.
Функция transformed() возвращает копию изображения, преобразованного с заданной матрицей преобразования и режимом преобразования: внутренне матрица преобразования корректируется для компенсации нежелательного смещения, т. е. функция transformed() возвращает самое маленькое изображение, содержащее все преобразованные точки исходного изображения. Статическая функция trueMatrix() возвращает фактическую матрицу, используемую для преобразования изображения.
Также существуют функции для изменения атрибутов изображения непосредственно:
| Функция | Описание |
|---|---|
| setDotsPerMeterX() | Определяет соотношение сторон, устанавливая количество пикселей, помещающихся горизонтально на один физический метр. |
| setDotsPerMeterY() | Определяет соотношение сторон, устанавливая количество пикселей, помещающихся вертикально на один физический метр. |
| fill() | Заполняет всё изображение заданным значением пикселя. |
| invertPixels() | Инвертирует все значения пикселей в изображении, используя заданное значение InvertMode. |
| setColorTable() | Устанавливает таблицу цветов, используемую для преобразования индексов цветов. Только монохромные и 8-битные форматы. |
| setColorCount() | Изменяет размер таблицы цветов. Только монохромные и 8-битные форматы. |
См. также QImageReader, QImageWriter, QPixmap, QSvgRenderer, Пример композиции изображений, Пример просмотрщика изображений, Пример рисования и Пример пикселизатора.
Документация типов членов
enum QImage::Format
В Qt доступны следующие форматы изображений. См. примечания после таблицы.
| Константа | Значение | Описание |
|---|---|---|
QImage::Format_Invalid |
0 |
Изображение недействительно. |
QImage::Format_Mono |
1 |
Изображение хранится с использованием 1 бита на пиксель. Байты упакованы с старшим битом (MSB) первым. |
QImage::Format_MonoLSB |
2 |
Изображение хранится с использованием 1 бита на пиксель. Байты упакованы с младшим битом (LSB) первым. |
QImage::Format_Indexed8 |
3 |
Изображение хранится с использованием 8-битовых индексов в палитру цветов. |
QImage::Format_RGB32 |
4 |
Изображение хранится в 32-битном формате RGB (0xffRRGGBB). |
QImage::Format_ARGB32 |
5 |
Изображение хранится в 32-битном формате ARGB (0xAARRGGBB). |
QImage::Format_ARGB32_Premultiplied |
6 |
Изображение хранится в предварительно умноженном 32-битном формате ARGB (0xAARRGGBB), т. е. каналы красного, зелёного и синего умножены на альфа-компоненту, разделённую на 255. (Если RR, GG или BB имеют значение выше, чем альфа-канал, результаты не определены.) Определённые операции (например, композиция изображений с использованием альфа-смешивания) выполняются быстрее с предварительно умноженным ARGB32, чем с обычным ARGB32. |
QImage::Format_RGB16 |
7 |
Изображение хранится в 16-битном формате RGB (5-6-5). |
QImage::Format_ARGB8565_Premultiplied |
8 |
Изображение хранится в предварительно умноженном 24-битном формате ARGB (8-5-6-5). |
QImage::Format_RGB666 |
9 |
Изображение хранится в 24-битном формате RGB (6-6-6). Неиспользуемые старшие биты всегда равны нулю. |
QImage::Format_ARGB6666_Premultiplied |
10 |
Изображение хранится в предварительно умноженном 24-битном формате ARGB (6-6-6-6). |
QImage::Format_RGB555 |
11 |
Изображение хранится в 16-битном формате RGB (5-5-5). Неиспользуемый старший бит всегда равен нулю. |
QImage::Format_ARGB8555_Premultiplied |
12 |
Изображение хранится в предварительно умноженном 24-битном формате ARGB (8-5-5-5). |
QImage::Format_RGB888 |
13 |
Изображение хранится в 24-битном формате RGB (8-8-8). |
QImage::Format_RGB444 |
14 |
Изображение хранится в 16-битном формате RGB (4-4-4). Неиспользуемые биты всегда равны нулю. |
QImage::Format_ARGB4444_Premultiplied |
15 |
Изображение хранится в предварительно умноженном 16-битном формате ARGB (4-4-4-4). |
QImage::Format_RGBX8888 |
16 |
Изображение хранится в 32-битном байтовом формате RGB(x) (8-8-8-8). Это то же самое, что и Format_RGBA8888, за исключением того, что альфа всегда должна быть 255. (добавлено в Qt 5.2) |
QImage::Format_RGBA8888 |
17 |
Изображение хранится в 32-битном байтовом формате RGBA (8-8-8-8). В отличие от ARGB32, это байтовый формат, что означает, что 32-битное кодирование отличается между архитектурами с big endian и little endian, соответственно (0xRRGGBBAA) и (0xAABBGGRR). Порядок цветов одинаков на любой архитектуре, если читать как байты 0xRR, 0xGG, 0xBB, 0xAA. (добавлено в Qt 5.2) |
QImage::Format_RGBA8888_Premultiplied |
18 |
Изображение хранится в предварительно умноженном 32-битном байтовом формате RGBA (8-8-8-8). (добавлено в Qt 5.2) |
QImage::Format_BGR30 |
19 |
Изображение хранится в 32-битном формате BGR (x-10-10-10). (добавлено в Qt 5.4) |
QImage::Format_A2BGR30_Premultiplied |
20 |
Изображение хранится в 32-битном предварительно умноженном формате ABGR (2-10-10-10). (добавлено в Qt 5.4) |
QImage::Format_RGB30 |
21 |
Изображение хранится в 32-битном формате RGB (x-10-10-10). (добавлено в Qt 5.4) |
QImage::Format_A2RGB30_Premultiplied |
22 |
Изображение хранится в предварительно умноженном 32-битном формате ARGB (2-10-10-10). (добавлено в Qt 5.4) |
QImage::Format_Alpha8 |
23 |
Изображение хранится в 8-битном формате только альфа-канала. (добавлено в Qt 5.5) |
QImage::Format_Grayscale8 |
24 |
Изображение хранится в 8-битном формате оттенков серого. (добавлено в Qt 5.5) |
QImage::Format_Grayscale16 |
28 |
Изображение хранится в 16-битном формате оттенков серого. (добавлено в Qt 5.13) |
QImage::Format_RGBX64 |
25 |
Изображение хранится в 64-битном формате RGB(x) с порядком полуслов (16-16-16-16). Это то же самое, что и Format_RGBA64, за исключением того, что альфа всегда должна быть 65535. (добавлено в Qt 5.12) |
QImage::Format_RGBA64 |
26 |
Изображение хранится в 64-битном формате RGBA с порядком полуслов (16-16-16-16). (добавлено в Qt 5.12) |
QImage::Format_RGBA64_Premultiplied |
27 |
Изображение хранится в предварительно умноженном 64-битном формате RGBA с порядком полуслов (16-16-16-16). (добавлено в Qt 5.12) |
QImage::Format_BGR888 |
29 |
Изображение хранится в 24-битном формате BGR. (добавлено в Qt 5.14) |
Примечание: Рисование в QImage с QImage::Format_Indexed8 не поддерживается.
Примечание: Избегайте прямого рендеринга в большинство из этих форматов с использованием QPainter. Рендеринг лучше всего оптимизирован для форматов Format_RGB32 и Format_ARGB32_Premultiplied, а во-вторых, для рендеринга в форматы Format_RGB16, Format_RGBX8888, Format_RGBA8888_Premultiplied, Format_RGBX64 и Format_RGBA64_Premultiplied.
См. также format() и convertToFormat().
enum QImage::InvertMode
Этот перечислимый тип используется для описания того, как значения пикселей должны быть инвертированы в функции invertPixels().
| Константа | Значение | Описание |
|---|---|---|
QImage::InvertRgb |
0 |
Инвертируются только значения RGB, а альфа-канал остаётся неизменным. |
QImage::InvertRgba |
1 |
Инвертируются все каналы, включая альфа-канал. |
См. также invertPixels().
Документация по членам-функциям
Возвращает QImage, в которой значения красного и синего компонентов всех пикселей были поменены местами, фактически преобразуя изображение RGB в изображение BGR.
Исходная QImage не изменяется.
См. также Преобразования изображений.
QImage &&QImage::mirrored(bool horizontal = ..., bool vertical = ...) &&
QImage QImage::mirrored(bool horizontal = ..., bool vertical = ...) const &
Возвращает зеркальное отображение изображения, зеркально отображённое по горизонтали и/или по вертикали в зависимости от того, установлены horizontal и vertical в true или false.
Обратите внимание, что исходное изображение не изменяется.
См. также Преобразования изображений.
QImage QImage::convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
QImage QImage::convertToFormat(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
Возвращает копию изображения в указанном формате format.
Указанные флаги преобразования изображений управляют тем, как обрабатываются данные изображения во время процесса преобразования.
См. также Форматы изображений.
QImage::QImage(QImage &&other)
Перемещающее создание экземпляра QImage, делая его указателем на тот же объект, на который указывает other.
Эта функция была представлена в Qt 5.2.
QImage::QImage(const QImage &image)
Создаёт поверхностную копию заданного image.
Для получения дополнительной информации о поверхностных копиях см. документацию по Неявное совместное использование данных.
См. также copy().
QImage::QImage(const QString &fileName, const char *format = nullptr)
Создаёт изображение и пытается загрузить изображение из файла с заданным именем fileName.
Загрузчик пытается прочитать изображение с помощью указанного формата format. Если format не указан (по умолчанию), он определяется автоматически на основе расширения и заголовка файла. Подробнее см. {QImageReader::setAutoDetectImageFormat()}{QImageReader}.
Если загрузка изображения не удалась, этот объект является изображением null.
Имя файла может ссылаться на фактический файл на диске или на один из встроенных ресурсов приложения. См. обзор Системы ресурсов для получения подробностей о том, как встроить изображения и другие файлы ресурсов в исполняемый файл приложения.
См. также isNull() и Чтение и запись файлов изображений.
QImage::QImage(const char *const [] xpm)
Создаёт изображение из заданного изображения xpm.
Убедитесь, что изображение является допустимым изображением XPM. Ошибки игнорируются.
Обратите внимание, что можно немного сжать переменную XPM, используя необычное объявление:
static const char * const start_xpm[] = {
"16 15 8 1",
"a c #cec6bd",
.... Дополнительный const делает всё определение неизменяемым, что немного эффективнее (например, когда код находится в общей библиотеке) и позволяет хранить его в ПЗУ вместе с приложением.
QImage::QImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Создаёт изображение с заданной шириной width, высотой height и форматом format, использующее существующий буфер памяти data. Ширина и высота должны быть указаны в пикселях. bytesPerLine задаёт количество байтов на строку (шаг).
Буфер должен оставаться корректным на протяжении всего жизненного цикла QImage и всех его копий, которые не были изменены или каким-либо образом не привязаны к исходному буферу. Изображение не удаляет буфер при уничтожении. Вы можете предоставить указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.
Если format является форматом индексированных цветов, таблица цветов изображения первоначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.
В отличие от аналогичного конструктора QImage, принимающего не-const буфер данных, эта версия никогда не изменит содержимое буфера. Например, вызов QImage::bits() вернёт глубокую копию изображения, а не буфер, переданный в конструктор. Это позволяет эффективно создавать QImage из исходных данных без возможности изменения исходных данных.
QImage::QImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Создаёт изображение с заданной шириной width, высотой height и форматом format, использующее существующий буфер памяти data. Ширина и высота должны быть указаны в пикселях. bytesPerLine задаёт количество байтов на строку (шаг).
Буфер должен оставаться корректным на протяжении всего жизненного цикла QImage и всех его копий, которые не были изменены или каким-либо образом не привязаны к исходному буферу. Изображение не удаляет буфер при уничтожении. Вы можете предоставить указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.
Если format является форматом индексированных цветов, таблица цветов изображения первоначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.
QImage::QImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Создаёт изображение с заданной шириной width, высотой height и форматом format, использующее существующий неизменяемый буфер памяти data. Ширина и высота должны быть указаны в пикселях, data должен быть выровнен по 32 битам, и каждая строка данных в изображении также должна быть выровнена по 32 битам.
Буфер должен оставаться корректным на протяжении всего жизненного цикла QImage и всех его копий, которые не были изменены или каким-либо образом не привязаны к исходному буферу. Изображение не удаляет буфер при уничтожении. Вы можете предоставить указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.
Если format является форматом индексированных цветов, таблица цветов изображения первоначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.
В отличие от аналогичного конструктора QImage, принимающего не-const буфер данных, эта версия никогда не изменит содержимое буфера. Например, вызов QImage::bits() вернёт глубокую копию изображения, а не буфер, переданный в конструктор. Это позволяет эффективно создавать QImage из исходных данных без возможности изменения исходных данных.
QImage::QImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
Создаёт изображение с заданной шириной width, высотой height и форматом format, использующее существующий буфер памяти data. Ширина и высота должны быть указаны в пикселях, data должен быть выровнен по 32 битам, и каждая строка данных в изображении также должна быть выровнена по 32 битам.
Буфер должен оставаться корректным на протяжении всего жизненного цикла QImage и всех его копий, которые не были изменены или каким-либо образом не привязаны к исходному буферу. Изображение не удаляет буфер при уничтожении. Вы можете предоставить указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.
Если format является форматом индексированных цветов, таблица цветов изображения первоначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.
QImage::QImage(int width, int height, QImage::Format format)
Создаёт изображение с заданной шириной width, высотой height и форматом format.
Если память не может быть выделена, будет возвращено изображение null.
Предупреждение: Это создаст QImage с неинициализированными данными. Вызовите fill(), чтобы заполнить изображение соответствующим значением пикселя перед рисованием на нём с помощью QPainter.
QImage::QImage(const QSize &size, QImage::Format format)
Создаёт изображение с заданным размером size и форматом format.
Если память не может быть выделена, возвращается изображение null.
Предупреждение: Это создаст QImage с неинициализированными данными. Вызовите fill(), чтобы заполнить изображение соответствующим значением пикселя перед рисованием на нём с помощью QPainter.
QImage::QImage()
Создаёт изображение null.
См. также isNull().
QImage &QImage::operator=(QImage &&other)
Перемещающее присваивание other этому экземпляру QImage.
Эта функция была представлена в Qt 5.2.
QImage &QImage::operator=(const QImage &image)
Присваивает поверхностную копию заданного image этому изображению и возвращает ссылку на это изображение.
Для получения дополнительной информации о поверхностных копиях см. документацию по Неявное совместное использование данных.
[virtual] QImage::~QImage()
Уничтожает изображение и производит очистку.
bool QImage::allGray() const
Возвращает true если все цвета на изображении являются оттенками серого (т.е. их компоненты красного, зелёного и синего цвета равны); в противном случае false.
Обратите внимание, что эта функция медленная для изображений без таблицы цветов.
См. также isGrayscale().
void QImage::applyColorTransform(const QColorTransform &transform)
Применяет цветовое преобразование transform ко всем пикселям на изображении.
Эта функция была добавлена в Qt 5.14.
int QImage::bitPlaneCount() const
Возвращает количество битовых плоскостей на изображении.
Количество битовых плоскостей — это количество битов информации о цвете и прозрачности для каждого пикселя. Это отличается от (т.е. меньше, чем) глубины, когда формат изображения содержит неиспользуемые биты.
Эта функция была добавлена в Qt 4.7.
См. также depth(), format() и Форматы изображений.
uchar *QImage::bits()
Возвращает указатель на данные первого пикселя. Это эквивалентно scanLine(0).
Обратите внимание, что QImage использует неявное совместное использование данных. Эта функция выполняет глубокую копию общих данных пикселей, тем самым гарантируя, что этот QImage является единственным использующим текущее возвращаемое значение.
См. также scanLine(), sizeInBytes() и constBits().
const uchar *QImage::bits() const
Это перегруженная функция.
Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные const.
int QImage::bytesPerLine() const
Возвращает количество байтов на строке сканирования изображения.
Это эквивалентно sizeInBytes() / height() если height() отлична от нуля.
См. также scanLine().
qint64 QImage::cacheKey() const
Возвращает число, которое идентифицирует содержимое этого объекта QImage. Разные объекты QImage могут иметь одинаковый ключ только в том случае, если они ссылаются на одно и то же содержимое.
Ключ изменится при изменении изображения.
QRgb QImage::color(int i) const
Возвращает цвет в таблице цветов по индексу i. Первый цвет имеет индекс 0.
Цвета в таблице цветов изображения задаются как наборы ARGB (QRgb). Используйте функции qAlpha(), qRed(), qGreen() и qBlue() для получения компонентов цветового значения.
См. также setColor(), pixelIndex() и Обработка пикселей.
int QImage::colorCount() const
Возвращает размер таблицы цветов для изображения.
Обратите внимание, что colorCount() возвращает 0 для изображений 32 бита на пиксель, потому что эти изображения не используют таблицы цветов, а вместо этого кодируют значения пикселей как наборы ARGB.
Эта функция была добавлена в Qt 4.6.
См. также setColorCount() и Информация об изображении.
QColorSpace QImage::colorSpace() const
Возвращает цветовое пространство изображения, если оно определено.
Эта функция была добавлена в Qt 5.14.
См. также setColorSpace().
QVector<QRgb> QImage::colorTable() const
Возвращает список цветов, содержащихся в таблице цветов изображения, или пустой список, если у изображения нет таблицы цветов.
См. также setColorTable(), colorCount() и color().
const uchar *QImage::constBits() const
Возвращает указатель на данные первого пикселя.
Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные const.
Эта функция была добавлена в Qt 4.7.
См. также bits() и constScanLine().
const uchar *QImage::constScanLine(int i) const
Возвращает указатель на данные пикселей на строке сканирования с индексом i. Первая строка сканирования имеет индекс 0.
Данные строки сканирования выровнены по крайней мере на 32 бита. Для 64-битных форматов используется собственное выравнивание 64-битных целых чисел (64 бита для большинства платформ, но особенно 32 бита на i386).
Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные const.
Эта функция была добавлена в Qt 4.7.
См. также scanLine() и constBits().
void QImage::convertTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor)
Отсоединить и преобразовать изображение в заданный format на месте.
Указанные флаги преобразования изображений flags управляют тем, как обрабатываются данные изображения во время процесса преобразования.
Эта функция была добавлена в Qt 5.13.
См. также convertToFormat().
void QImage::convertToColorSpace(const QColorSpace &colorSpace)
Преобразует изображение в colorSpace.
Если у изображения нет допустимого цветового пространства, метод ничего не делает.
Эта функция была добавлена в Qt 5.14.
См. также convertedToColorSpace() и setColorSpace().
QImage QImage::convertToFormat(QImage::Format format, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
Это перегруженная функция.
Возвращает копию изображения, преобразованного в указанный format, используя указанную colorTable.
Преобразование из форматов RGB в индексированные форматы — медленная операция и будет использовать прямой подход «ближайший цвет» без дithering.
QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const
Возвращает изображение, преобразованное в colorSpace.
Если у изображения нет допустимого цветового пространства, возвращается null QImage.
Эта функция была добавлена в Qt 5.14.
См. также convertToColorSpace().
QImage QImage::copy(const QRect &rectangle = QRect()) const
Возвращает подобласть изображения в виде нового изображения.
Возвращаемое изображение копируется из позиции (rectangle.x(), rectangle.y()) в этом изображении и всегда будет иметь размер заданного rectangle.
В областях за пределами этого изображения пиксели устанавливаются в 0. Для изображений RGB с 32 битами на пиксель это означает черный цвет; для изображений ARGB с 32 битами на пиксель это означает прозрачный черный; для 8-битных изображений это означает цвет с индексом 0 в таблице цветов, который может быть любым; для 1-битных изображений это означает Qt::color0.
Если заданный rectangle является нулевым прямоугольником, копируется все изображение.
См. также QImage().
QImage QImage::copy(int x, int y, int width, int height) const
Это перегруженная функция.
Возвращаемое изображение копируется из позиции (x, y) в этом изображении и всегда будет иметь заданную width и height. В областях за пределами этого изображения пиксели устанавливаются в 0.
QImage QImage::createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const
Создаёт и возвращает 1-битный маску из буфера альфа-канала в этом изображении. Возвращает null изображение, если формат изображения QImage::Format_RGB32.
Аргумент flags — это побитовое ИЛИ флагов Qt::ImageConversionFlags и управляет процессом преобразования. Передача 0 для флагов устанавливает все стандартные значения.
Возвращаемое изображение имеет порядок битов little-endian (т.е. формат изображения QImage::Format_MonoLSB), который можно преобразовать в big-endian (QImage::Format_Mono) с помощью функции convertToFormat().
См. также createHeuristicMask() и Преобразования изображений.
END_OF_DOCUMENT_MARKERQImage QImage::createHeuristicMask(bool clipTight = true) const
Создаёт и возвращает эвристическую маску для этого изображения с 1 бит на пиксель.
Функция работает, выбирая цвет из одного из углов, затем удаляя пиксели этого цвета, начиная с краёв. Четыре угла голосуют за то, какой цвет будет замаскирован. В случае ничьи (это обычно означает, что эта функция не применима к изображению), результат произвольный.
Возвращаемое изображение имеет порядок битов little-endian (т.е. формат изображения — QImage::Format_MonoLSB), который можно преобразовать в big-endian (QImage::Format_Mono) с помощью функции convertToFormat().
Если clipTight равно true (по умолчанию), маска имеет минимальный размер, достаточный для покрытия пикселей; в противном случае маска больше, чем пиксели данных.
Обратите внимание, что эта функция игнорирует альфа-канал.
См. также createAlphaMask() и Преобразования изображений.
QImage QImage::createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const
Создаёт и возвращает маску для этого изображения, основанную на заданном значении цвета color. Если mode равен MaskInColor (значение по умолчанию), все пиксели, соответствующие цвету color, будут непрозрачными пикселями в маске. Если mode равен MaskOutColor, все пиксели, соответствующие заданному цвету, будут прозрачными.
См. также createAlphaMask() и createHeuristicMask().
int QImage::depth() const
Возвращает глубину изображения.
Глубина изображения — это количество бит, используемых для хранения одного пикселя, также называемое битами на пиксель (bpp).
Поддерживаемые глубины — 1, 8, 16, 24, 32 и 64.
См. также bitPlaneCount(), convertToFormat(), Форматы изображений и Информация об изображении.
qreal QImage::devicePixelRatio() const
Возвращает коэффициент пикселей устройства для изображения. Это отношение между пикселями устройства и независимыми от устройства пикселями.
Используйте эту функцию при расчёте геометрии макета на основе размера изображения: QSize layoutSize = image.size() / image.devicePixelRatio()
Значение по умолчанию — 1.0.
См. также setDevicePixelRatio() и QImageReader.
int QImage::dotsPerMeterX() const
Возвращает количество пикселей, умещающихся по горизонтали в одном физическом метре. Вместе с dotsPerMeterY() это число определяет предполагаемый масштаб и соотношение сторон изображения.
См. также setDotsPerMeterX() и Информация об изображении.
int QImage::dotsPerMeterY() const
Возвращает количество пикселей, умещающихся по вертикали в одном физическом метре. Вместе с dotsPerMeterX() это число определяет предполагаемый масштаб и соотношение сторон изображения.
См. также setDotsPerMeterY() и Информация об изображении.
void QImage::fill(uint pixelValue)
Заполняет всё изображение заданным значением пикселя pixelValue.
Если глубина этого изображения равна 1, используется только младший бит. Если вы вызываете fill(0), fill(2) и т.д., изображение заполняется нулями. Если вы вызываете fill(1), fill(3) и т.д., изображение заполняется единицами. Если глубина равна 8, используются 8 младших битов, а если 16 — 16 младших битов.
Примечание: QImage::pixel() возвращает цвет пикселя в заданных координатах, в то время как QColor::pixel() возвращает значение пикселя в подлежащей системе окон (по сути, индексное значение), поэтому обычно вы захотите использовать QImage::pixel() для использования цвета из существующего изображения или QColor::rgb() для использования определённого цвета.
См. также depth() и Преобразования изображений.
void QImage::fill(const QColor &color)
Это перегруженная функция.
Заполняет всё изображение заданным цветом color.
Если глубина изображения равна 1, изображение будет заполнено 1, если color равен Qt::color1; в противном случае оно будет заполнено 0.
Если глубина изображения равна 8, изображение будет заполнено индексом, соответствующим color в таблице цветов, если она присутствует; в противном случае оно будет заполнено 0.
Функция была добавлена в Qt 4.8.
void QImage::fill(Qt::GlobalColor color)
Это перегруженная функция.
Заполняет изображение заданным цветом color, описанным как стандартный глобальный цвет.
Функция была добавлена в Qt 4.8.
QImage::Format QImage::format() const
Возвращает формат изображения.
См. также Форматы изображений.
[static] QImage QImage::fromData(const uchar *data, int size, const char *format = nullptr)
Создаёт QImage из первых size байтов заданных двоичных данных data. Загрузчик пытается прочитать изображение с использованием указанного формата format. Если format не указан (по умолчанию), загрузчик анализирует данные, чтобы угадать формат файла.
Если format указан, он должен быть одним из значений, возвращаемых QImageReader::supportedImageFormats().
Если загрузка изображения не удалась, возвращается пустое изображение.
См. также load(), save() и Чтение и запись файлов изображений.
[static] QImage QImage::fromData(const QByteArray &data, const char *format = nullptr)
Это перегруженная функция.
Загружает изображение из данного QByteArray data.
bool QImage::hasAlphaChannel() const
Возвращает true если формат изображения поддерживает альфа-канал, в противном случае возвращает false.
См. также Информация об изображении.
int QImage::height() const
Возвращает высоту изображения.
См. также Информация об изображении.
void QImage::invertPixels(QImage::InvertMode mode = InvertRgb)
Инвертирует все значения пикселей в изображении.
Указанный режим инверсии mode имеет значение только тогда, когда глубина изображения равна 32. Значение по умолчанию — InvertRgb, которое оставляет альфа-канал без изменений. Если mode равен InvertRgba, инвертируются и биты альфа-канала.
Инвертирование 8-битного изображения означает замену всех пикселей с индексом цвета i на пиксель с индексом цвета 255 минус i. То же самое относится к 1-битному изображению. Обратите внимание, что таблица цветов не изменяется.
Если изображение имеет предопределённый альфа-канал, изображение сначала преобразуется в формат изображения без предопределённого альфа-канала для инвертирования, а затем обратно.
См. также Преобразования изображений.
bool QImage::isGrayscale() const
Для 32-битных изображений эта функция эквивалентна allGray().
Для изображений с индексированными цветами эта функция возвращает true если цвет(i) равен QRgb(i, i, i) для всех индексов таблицы цветов; в противном случае возвращает false.
См. также allGray() и Форматы изображений.
bool QImage::isNull() const
Возвращает true если это пустое изображение, в противном случае возвращает false.
Пустое изображение имеет все параметры, установленные в ноль, и не имеет выделенных данных.
bool QImage::load(const QString &fileName, const char *format = nullptr)
Загружает изображение из файла с заданным именем fileName. Возвращает true если изображение было успешно загружено; в противном случае делает изображение недействительным и возвращает false.
Загрузчик пытается прочитать изображение с использованием указанного формата, например, PNG или JPG. Если format не указан (по умолчанию), он определяется автоматически на основе расширения файла и заголовка. Подробнее см. QImageReader::setAutoDetectImageFormat().
Имя файла может ссылаться как на фактический файл на диске, так и на один из встроенных ресурсов приложения. См. обзор Системы ресурсов для получения подробной информации о том, как встраивать изображения и другие файлы ресурсов в исполняемый файл приложения.
См. также Чтение и запись файлов изображений.
END_OF_DOCUMENT_MARKERbool QImage::load(QIODevice *device, const char *format)
Это перегруженный метод.
Этот метод считывает QImage из заданного device. Например, это можно использовать для загрузки изображения непосредственно в QByteArray.
bool QImage::loadFromData(const uchar *data, int len, const char *format = nullptr)
Загружает изображение из первых len байтов заданных бинарных данных data. Возвращает true, если изображение успешно загружено; в противном случае делает изображение недействительным и возвращает false.
Загрузчик пытается прочитать изображение с помощью указанного format, например, PNG или JPG. Если format не указан (что является значением по умолчанию), загрузчик исследует файл на предмет заголовка, чтобы определить формат файла.
См. также Чтение и запись файлов изображений.
bool QImage::loadFromData(const QByteArray &data, const char *format = nullptr)
Это перегруженный метод.
Загружает изображение из заданного QByteArray data.
QPoint QImage::offset() const
Возвращает количество пикселей, на которое изображение должно быть смещено при позиционировании относительно других изображений.
См. также setOffset() и Информация об изображении.
QRgb QImage::pixel(const QPoint &position) const
Возвращает цвет пикселя в заданной position.
Если position недействительна, результаты неопределены.
Предупреждение: Этот метод дорогостоящий при использовании для масштабной обработки пикселей. Используйте constBits() или constScanLine(), если нужно прочитать много пикселей.
См. также setPixel(), valid(), constBits(), constScanLine(), и Обработка пикселей.
QRgb QImage::pixel(int x, int y) const
Это перегруженный метод.
Возвращает цвет пикселя в координатах (x, y).
QColor QImage::pixelColor(const QPoint &position) const
Возвращает цвет пикселя в заданной position в виде QColor.
Если position недействительна, возвращается недействительный QColor.
Предупреждение: Этот метод дорогостоящий при использовании для масштабной обработки пикселей. Используйте constBits() или constScanLine(), если нужно прочитать много пикселей.
Этот метод был добавлен в Qt 5.6.
См. также setPixelColor(), setPixel(), valid(), constBits(), constScanLine(), и Обработка пикселей.
QColor QImage::pixelColor(int x, int y) const
Это перегруженный метод.
Возвращает цвет пикселя в координатах (x, y) в виде QColor.
Этот метод был добавлен в Qt 5.6.
QPixelFormat QImage::pixelFormat() const
Возвращает QImage::Format как QPixelFormat
int QImage::pixelIndex(const QPoint &position) const
Возвращает индекс пикселя в заданной position.
Если position недействительна или изображение не является палитрами (depth() > 8), результаты неопределены.
См. также valid(), depth(), и Обработка пикселей.
int QImage::pixelIndex(int x, int y) const
Это перегруженный метод.
Возвращает индекс пикселя в координатах (x, y).
QRect QImage::rect() const
Возвращает охватывающий прямоугольник (0, 0, width(), height()) изображения.
См. также Информация об изображении.
bool QImage::reinterpretAsFormat(QImage::Format format)
Изменяет формат изображения на format без изменения данных. Работает только между форматами с одинаковой глубиной.
Возвращает true, если успешно.
Этот метод можно использовать для изменения изображений с альфа-каналом на соответствующие непрозрачные форматы, если известно, что данные содержат только непрозрачные пиксели, или для изменения формата заданного буфера изображения перед перезаписью его новыми данными.
Предупреждение: Метод не проверяет, являются ли данные изображения допустимыми в новом формате, и все равно вернет true, если глубины совместимы. Операции над изображением с недопустимыми данными не определены.
Предупреждение: Если изображение не отсоединено, это приведет к копированию данных.
Этот метод был добавлен в Qt 5.9.
См. также hasAlphaChannel() и convertToFormat().
bool QImage::save(const QString &fileName, const char *format = nullptr, int quality = -1) const
Сохраняет изображение в файл с заданным fileName, используя заданный формат изображения format и коэффициент качества quality. Если format равен 0, QImage попытается определить формат, посмотрев на суффикс fileName.
Коэффициент quality должен быть в диапазоне от 0 до 100 или -1. Укажите 0 для получения маленьких сжатых файлов, 100 для больших несжатых файлов и -1 (по умолчанию) для использования параметров по умолчанию.
Возвращает true, если изображение успешно сохранено; в противном случае возвращает false.
См. также Чтение и запись файлов изображений.
bool QImage::save(QIODevice *device, const char *format = nullptr, int quality = -1) const
Это перегруженный метод.
Этот метод записывает QImage в заданный device.
Например, это можно использовать для сохранения изображения непосредственно в QByteArray:
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
Возвращает копию изображения, масштабированную до прямоугольника, определенного заданным size в соответствии с заданным aspectRatioMode и transformMode.
- Если aspectRatioMode равен Qt::IgnoreAspectRatio, изображение масштабируется до size.
- Если aspectRatioMode равен Qt::KeepAspectRatio, изображение масштабируется до максимально возможного прямоугольника внутри size, сохраняя соотношение сторон.
- Если aspectRatioMode равен Qt::KeepAspectRatioByExpanding, изображение масштабируется до минимально возможного прямоугольника снаружи size, сохраняя соотношение сторон.
Если заданный size пустой, этот метод возвращает пустое изображение.
См. также isNull() и Преобразования изображений.
QImage QImage::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
Это перегруженный метод.
Возвращает копию изображения, масштабированную до прямоугольника с заданной width и height в соответствии с заданным aspectRatioMode и transformMode.
Если либо width, либо height равно нулю или отрицательному значению, этот метод возвращает пустое изображение.
QImage QImage::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает масштабированную копию изображения. Возвращаемое изображение масштабируется до заданной height с использованием указанного режима преобразования mode.
Этот метод автоматически вычисляет ширину изображения таким образом, чтобы сохранялось соотношение сторон изображения.
Если заданная height равна 0 или отрицательному значению, возвращается пустое изображение.
См. также Преобразования изображений.
QImage QImage::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает изменённую копию изображения. Возвращаемое изображение масштабируется до заданной ширины width с использованием указанного режима преобразования mode.
Эта функция автоматически вычисляет высоту изображения, чтобы сохранить его соотношение сторон.
Если заданная width равна 0 или отрицательна, возвращается изображение null.
См. также Преобразования изображений.
uchar *QImage::scanLine(int i)
Возвращает указатель на данные пикселей на строке сканирования с индексом i. Первая строка сканирования имеет индекс 0.
Данные строки сканирования выровнены как минимум по 32 бита. Для 64-битных форматов используется родное выравнивание 64-битных целых чисел (64 бита для большинства платформ, но 32 бита на i386).
Предупреждение: Если вы работаете с данными изображения с 32 битами на пиксель, приведите возвращаемый указатель к типу QRgb* (QRgb имеет размер 32 бита) и используйте его для чтения/записи значения пикселя. Вы не можете использовать указатель uchar* напрямую, так как формат пикселя зависит от порядка байтов на платформе. Используйте qRed(), qGreen(), qBlue() и qAlpha() для доступа к пикселям.
См. также bytesPerLine(), bits(), Обработка пикселей и constScanLine().
const uchar *QImage::scanLine(int i) const
Это перегруженная функция.
void QImage::setColor(int index, QRgb colorValue)
Устанавливает цвет по заданному индексу index в таблице цветов на заданное значение colorValue. Значение цвета представляет собой четвёрку ARGB.
Если index выходит за текущий размер таблицы цветов, она расширяется с помощью setColorCount().
См. также color(), colorCount(), setColorTable() и Обработка пикселей.
void QImage::setColorCount(int colorCount)
Изменяет размер таблицы цветов так, чтобы она содержала colorCount элементов.
Если таблица цветов расширяется, все дополнительные цвета будут установлены как прозрачные (т.е., qRgba(0, 0, 0, 0)).
При использовании изображения таблица цветов должна быть достаточно большой, чтобы содержать записи для всех значений пикселя/индекса, присутствующих в изображении; в противном случае результаты не определены.
Эта функция была добавлена в Qt 4.6.
См. также colorCount(), colorTable(), setColor() и Преобразования изображений.
void QImage::setColorSpace(const QColorSpace &colorSpace)
Устанавливает цветовое пространство изображения на colorSpace без выполнения каких-либо преобразований данных изображения.
Эта функция была добавлена в Qt 5.14.
См. также colorSpace().
void QImage::setColorTable(const QVector<QRgb> colors)
Устанавливает таблицу цветов, используемую для преобразования индексов цветов в значения QRgb, на заданные colors.
При использовании изображения таблица цветов должна быть достаточно большой, чтобы содержать записи для всех значений пикселя/индекса, присутствующих в изображении; в противном случае результаты не определены.
См. также colorTable(), setColor() и Преобразования изображений.
void QImage::setDevicePixelRatio(qreal scaleFactor)
Устанавливает коэффициент пикселей устройства для изображения. Это отношение между пикселями изображения и независимыми от устройства пикселями.
По умолчанию scaleFactor равен 1.0. Установка его на другое значение имеет два эффекта:
QPainters, открытые на изображении, будут масштабироваться. Например, рисование на изображении 200x200 с коэффициентом 2.0 приведёт к эффективным (независимым от устройства) границам рисования 100x100.
В Qt пути кода, вычисляющие геометрию макета на основе размера изображения, учтут этот коэффициент: QSize layoutSize = image.size() / image.devicePixelRatio() . В итоге изображение отображается как изображение с высоким разрешением, а не как большое изображение (см. Рисование версий с высоким разрешением для пиксем и изображений).
См. также devicePixelRatio().
void QImage::setDotsPerMeterX(int x)
Устанавливает количество пикселей, которое помещается по горизонтали на физический метр, равное x.
Вместе с dotsPerMeterY() это число определяет предполагаемый масштаб и соотношение сторон изображения и определяет масштаб, на котором QPainter будет рисовать графику на изображении. Оно не изменяет масштаб или соотношение сторон изображения при рендеринге на других устройствах рисования.
См. также dotsPerMeterX() и Информация об изображении.
void QImage::setDotsPerMeterY(int y)
Устанавливает количество пикселей, которое помещается по вертикали на физический метр, равное y.
Вместе с dotsPerMeterX() это число определяет предполагаемый масштаб и соотношение сторон изображения и определяет масштаб, на котором QPainter будет рисовать графику на изображении. Оно не изменяет масштаб или соотношение сторон изображения при рендеринге на других устройствах рисования.
См. также dotsPerMeterY() и Информация об изображении.
void QImage::setOffset(const QPoint &offset)
Устанавливает количество пикселей, на которое предполагается сместить изображение при позиционировании относительно других изображений, равное offset.
См. также offset() и Информация об изображении.
void QImage::setPixel(const QPoint &position, uint index_or_rgb)
Устанавливает индекс пикселя или цвет по заданной позиции position на index_or_rgb.
Если формат изображения монохромный или палитровый, заданное значение index_or_rgb должно быть индексом в таблице цветов изображения, в противном случае параметр должен быть значением QRgb.
Если position не является допустимой парой координат в изображении, или если index_or_rgb >= colorCount() в случае монохромных и палитровых изображений, результат не определён.
Предупреждение: Эта функция является дорогостоящей из-за вызова внутренней функции detach() внутри; если производительность является проблемой, рекомендуется использовать scanLine() или bits() для прямого доступа к данным пикселей.
См. также pixel() и Обработка пикселей.
void QImage::setPixel(int x, int y, uint index_or_rgb)
Это перегруженная функция.
Устанавливает индекс пикселя или цвет в координатах (x, y) на index_or_rgb.
void QImage::setPixelColor(const QPoint &position, const QColor &color)
Устанавливает цвет в заданной позиции position на color.
Если position не является допустимой парой координат в изображении, или формат изображения монохромный или палитровый, результат не определён.
Предупреждение: Эта функция является дорогостоящей из-за вызова внутренней функции detach() внутри; если производительность является проблемой, рекомендуется использовать scanLine() или bits() для прямого доступа к данным пикселей.
Эта функция была добавлена в Qt 5.6.
См. также pixelColor(), pixel(), bits(), scanLine() и Обработка пикселей.
void QImage::setPixelColor(int x, int y, const QColor &color)
Это перегруженная функция.
Устанавливает цвет пикселя в координатах (x, y) на color.
Эта функция была добавлена в Qt 5.6.
void QImage::setText(const QString &key, const QString &text)
Устанавливает текст изображения на заданный text и ассоциирует его с заданным key.
Если вы хотите сохранить только один блок текста (например, «комментарий» или просто описание), вы можете либо передать пустой ключ, либо использовать общий ключ, например, «Описание».
Текст изображения встраивается в данные изображения, когда вы вызываете save() или QImageWriter::write().
Не все форматы изображений поддерживают встроенный текст. Вы можете узнать, поддерживает ли конкретное изображение или формат встраивание текста, используя QImageWriter::supportsOption(). Пример:
QImageWriter writer;
writer.setFormat("png");
if (writer.supportsOption(QImageIOHandler::Description))
qDebug() << "Png supports embedded text"; Вы можете использовать QImageWriter::supportedImageFormats(), чтобы узнать, какие форматы изображений доступны.
См. также text() и textKeys().
QSize QImage::size() const
Возвращает размер изображения, т.е. его ширину() и высоту().
См. также Информация об изображении.
qsizetype QImage::sizeInBytes() const
Возвращает размер данных изображения в байтах.
Эта функция была добавлена в Qt 5.10.
См. также byteCount(), bytesPerLine(), bits(), и Информация об изображении.
[protected] QImage QImage::smoothScaled(int w, int h) const
Возвращает плавно масштабированную копию изображения. Возвращаемое изображение имеет размер w пикселей по ширине и h пикселей по высоте.
void QImage::swap(QImage &other)
Меняет местами изображение other с этим изображением. Эта операция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 4.8.
QString QImage::text(const QString &key = QString()) const
Возвращает текст изображения, связанный с заданным ключом. Если указанный ключ является пустой строкой, возвращается весь текст изображения, при этом каждая пара ключ-текст разделяется новой строкой.
См. также setText() и textKeys().
QStringList QImage::textKeys() const
Возвращает ключи текста для этого изображения.
Вы можете использовать эти ключи с text(), чтобы вывести текст изображения для определённого ключа.
См. также text().
CGImageRef QImage::toCGImage() const
Создаёт CGImage эквивалент этого QImage. Возвращает CGImageRef дескриптор.
Возвращаемый CGImageRef участвует в неявном обмене QImage и содержит ссылку на данные QImage. CGImage является неизменяемым и никогда не отсоединяет QImage. Запись в QImage будет отсоединять его как обычно.
Эта функция быстрая и не копирует и не преобразует данные изображения.
Поддерживаются следующие форматы изображений, которые будут сопоставлены с соответствующим родным типом изображения:
| 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 |
Другие форматы не поддерживаются; для этих случаев эта функция возвращает нулевой CGImageRef. Пользователи этой функции могут сначала преобразовать QImage в поддерживаемый формат, например, в Format_ARGB32_Premultiplied.
Цветовое пространство CGImageRef установлено в цветовое пространство sRGB.
См. также QtMac::toNSImage().
[static] QImage::Format QImage::toImageFormat(QPixelFormat format)
Преобразует формат в QImage::Format
[static] QPixelFormat QImage::toPixelFormat(QImage::Format format)
Преобразует формат в QPixelFormat
QImage QImage::transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает копию изображения, преобразованную с помощью заданной матрицы преобразования matrix и режима преобразования mode.
Возвращаемое изображение обычно имеет тот же {формат изображений}{format}, что и исходное изображение. Однако сложное преобразование может привести к изображению, где не все пиксели покрываются преобразованными пикселями исходного изображения. В таких случаях этим фоновым пикселям будет назначен прозрачный цвет, и преобразованному изображению будет задан формат с альфа-каналом, даже если исходное изображение его не имело.
Матрица преобразования matrix внутренне корректируется для компенсации ненужного сдвига; т.е. получаемое изображение является наименьшим изображением, содержащим все преобразованные точки исходного изображения. Используйте функцию trueMatrix(), чтобы получить фактическую матрицу, используемую для преобразования изображения.
См. также trueMatrix() и Преобразования изображений.
QImage QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает копию изображения, преобразованную с помощью заданной матрицы преобразования matrix и режима преобразования mode.
Возвращаемое изображение обычно имеет тот же {формат изображений}{format}, что и исходное изображение. Однако сложное преобразование может привести к изображению, где не все пиксели покрываются преобразованными пикселями исходного изображения. В таких случаях этим фоновым пикселям будет назначен прозрачный цвет, и преобразованному изображению будет задан формат с альфа-каналом, даже если исходное изображение его не имело.
Матрица преобразования matrix внутренне корректируется для компенсации ненужного сдвига; т.е. получаемое изображение является наименьшим изображением, содержащим все преобразованные точки исходного изображения. Используйте функцию trueMatrix(), чтобы получить фактическую матрицу, используемую для преобразования изображения.
В отличие от других перегрузок, эта функция может использоваться для выполнения перспективных преобразований изображений.
См. также trueMatrix() и Преобразования изображений.
[static] QMatrix QImage::trueMatrix(const QMatrix &matrix, int width, int height)
Возвращает фактическую матрицу, используемую для преобразования изображения с заданной шириной width, высотой height и матрицей matrix.
При преобразовании изображения с помощью функции transformed(), матрица преобразования внутренне корректируется для компенсации ненужного сдвига, т.е. transformed() возвращает наименьшее изображение, содержащее все преобразованные точки исходного изображения. Эта функция возвращает изменённую матрицу, которая правильно отображает точки из исходного изображения в новое.
См. также transformed() и Преобразования изображений.
[static] QTransform QImage::trueMatrix(const QTransform &matrix, int width, int height)
Возвращает фактическую матрицу, используемую для преобразования изображения с заданной шириной width, высотой height и матрицей matrix.
При преобразовании изображения с помощью функции transformed(), матрица преобразования внутренне корректируется для компенсации ненужного сдвига, т.е. transformed() возвращает наименьшее изображение, содержащее все преобразованные точки исходного изображения. Эта функция возвращает изменённую матрицу, которая правильно отображает точки из исходного изображения в новое.
В отличие от других перегрузок, эта функция может создавать матрицы преобразований, которые могут использоваться для выполнения перспективных преобразований изображений.
См. также transformed() и Преобразования изображений.
bool QImage::valid(const QPoint &pos) const
Возвращает true если pos — это корректная пара координат внутри изображения; в противном случае возвращает false.
См. также rect() и QRect::contains().
bool QImage::valid(int x, int y) const
Это перегруженная функция.
Возвращает true если QPoint(x, y) — это корректная пара координат внутри изображения; в противном случае возвращает false.
int QImage::width() const
Возвращает ширину изображения.
См. также Сведения об изображении.
QVariant QImage::operator QVariant() const
Возвращает изображение в виде QVariant.
bool QImage::operator!=(const QImage &image) const
Возвращает true если у этого изображения и заданного изображения image разное содержимое; в противном случае возвращает false.
Сравнение может быть медленным, если нет очевидных различий, таких как разные ширины, в этом случае функция вернёт результат быстро.
См. также operator=().
bool QImage::operator==(const QImage &image) const
Возвращает true если у этого изображения и заданного изображения image одинаковое содержимое; в противном случае возвращает false.
Сравнение может быть медленным, если нет очевидных различий (например, разный размер или формат), в этом случае функция вернёт результат быстро.
См. также operator=().
Связанные нечлены
typedef QImageCleanupFunction
Функция со следующим сигнатурой, которая может использоваться для реализации базового управления памятью изображения:
void myImageCleanupHandler(void *info);
Этот typedef был введён в Qt 5.0.
QDataStream &operator<<(QDataStream &stream, const QImage &image)
Записывает заданное изображение image в заданный поток stream как изображение PNG или как изображение BMP, если версия потока равна 1. Обратите внимание, что запись потока в файл не создаст действительный файл изображения.
См. также QImage::save() и Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QImage &image)
Считывает изображение из заданного потока stream и сохраняет его в заданное изображение image.
См. также QImage::load() и Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qimage.html