Класс QImage
Класс QImage предоставляет независимое от оборудования представление изображения, позволяющее получить прямой доступ к данным пикселей и использовать его как устройство для рисования. Подробнее...
| Заголовок: | #include <QImage> |
| qmake: | QT += gui |
| Наследует: | QPaintDevice |
Примечание: Все функции в этом классе являются перевходящими.
Типы public
| Перечисление | Формат { Format_Invalid, Format_Mono, Format_MonoLSB, Format_Indexed8, Format_RGB32, …, Format_BGR888 } |
| Перечисление | РежимИнверсии { InvertRgb, InvertRgba } |
Public Функции
| 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 = false, bool vertical = true) const & |
| QImage && | mirrored(bool horizontal = false, bool vertical = true) && |
| QPoint | смещение() const |
| QRgb | пиксель(const QPoint &position) const |
| QRgb | пиксель(int x, int y) const |
| QColor | цветПикселя(const QPoint &position) const |
| QColor | цветПикселя(int x, int y) const |
| QPixelFormat | форматПикселя() const |
| int | индексПикселя(const QPoint &position) const |
| int | индексПикселя(int x, int y) const |
| QRect | прямоугольник() const |
| bool | переинтерпретироватьКакФормат(QImage::Format format) |
| QImage | rgbПоменянные() const & |
| QImage && | rgbПоменянные() && |
| bool | сохранить(const QString &fileName, const char *format = nullptr, int quality = -1) const |
| bool | сохранить(QIODevice *device, const char *format = nullptr, int quality = -1) const |
| QImage | масштабировать(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
| QImage | масштабировать(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
| QImage | масштабироватьДоВысоты(int height, Qt::TransformationMode mode = Qt::FastTransformation) const |
| QImage | масштабироватьДоШирины(int width, Qt::TransformationMode mode = Qt::FastTransformation) const |
| uchar * | строкаСканирования(int i) |
| const uchar * | строкаСканирования(int i) const |
| void | установитьАльфаКанал(const QImage &alphaChannel) |
| void | установитьЦвет(int index, QRgb colorValue) |
| void | установитьКоличествоЦветов(int colorCount) |
| void | установитьЦветовоеПространство(const QColorSpace &colorSpace) |
| void | установитьТаблицуЦветов(const QVector<QRgb> colors) |
| void | установитьОтношениеПикселейУстройства(qreal scaleFactor) |
| void | установитьТочкиНаМетрX(int x) |
| void | установитьТочкиНаМетрY(int y) |
| void | установитьСмещение(const QPoint &offset) |
| void | установитьПиксель(const QPoint &position, uint index_or_rgb) |
| void | установитьПиксель(int x, int y, uint index_or_rgb) |
| void | установитьЦветПикселя(const QPoint &position, const QColor &color) |
| void | установитьЦветПикселя(int x, int y, const QColor &color) |
| void | установитьТекст(const QString &key, const QString &text) |
| QSize | размер() const |
| qsizetype | размерВБайтах() const |
| void | обменять(QImage &other) |
| QString | текст(const QString &key = QString()) const |
| QStringList | ключиТекста() const |
| CGImageRef | вCGImage() const |
| QImage | преобразовать(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const |
| bool | валиден(const QPoint &pos) const |
| bool | валиден(int x, int y) const |
| int | ширина() const |
| QVariant | оператор QVariant() const |
| bool | не равно(const QImage &image) const |
| bool | равно(const QImage &image) const |
Статические публичные члены
| QImage | изДанных(const uchar *data, int size, const char *format = nullptr) |
| QImage | изДанных(const QByteArray &data, const char *format = nullptr) |
| QImage::Format | вФорматИзображения(QPixelFormat format) |
| QPixelFormat | вФорматПикселя(QImage::Format format) |
| QTransform | матрица(const QTransform &matrix, int width, int height) |
Защищенные функции
| QImage | плавноМасштабировать(int w, int h) const |
Связанные нечлены
| typedef | QImageCleanupFunction |
| QDataStream & | оператор<<(QDataStream &stream, const QImage &image) |
| QDataStream & | оператор>>(QDataStream &stream, QImage &image) |
Подробное описание
Qt предоставляет четыре класса для обработки данных изображений: QImage, QPixmap, QBitmap и QPicture. QImage разработан и оптимизирован для ввода/вывода и прямого доступа к пикселям и их изменения, в то время как QPixmap разработан и оптимизирован для отображения изображений на экране. QBitmap — это всего лишь вспомогательный класс, наследующий QPixmap, гарантирующий глубину 1. Наконец, класс QPicture является устройством рисования, которое записывает и воспроизводит команды QPainter.
Поскольку QImage является подклассом QPaintDevice, QPainter может использоваться для рисования непосредственно на изображениях. При использовании QPainter с QImage рисование может выполняться в другом потоке, отличном от текущего потока GUI.
Класс 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 для получения подробной информации о том, как встраивать изображения и другие файлы ресурсов в исполняемый файл приложения.
Для сохранения объекта QImage просто вызовите функцию save().
Полный список поддерживаемых форматов файлов доступен через функции 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>, а typedef 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-битное кодирование различается между архитектурами с большим и малым порядком байтов, соответственно (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 = false, bool vertical = true) &&
QImage QImage::mirrored(bool horizontal = false, bool vertical = true) 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.
Указанные флаги преобразования изображений flags управляют тем, как обрабатываются данные изображения во время процесса преобразования.
См. также Форматы изображений.
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.
Загрузчик пытается прочитать изображение с использованием заданного формата. Если формат не задан (что является значением по умолчанию), он автоматически определяется на основе суффикса и заголовка файла. Подробности см. в {QImageReader::setAutoDetectImageFormat()}{QImageReader}.
Если загрузка изображения не удалась, этот объект — изображение с нулевым значением.
Имя файла может ссылаться либо на фактический файл на диске, либо на один из встроенных ресурсов приложения. См. обзор Системы ресурсов для получения подробностей о том, как встроить изображения и другие файлы ресурсов в исполняемый файл приложения.
См. также 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)
Создаёт изображение с заданной шириной, высотой и форматом, использующее существующий буфер памяти 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)
Создаёт изображение с заданной шириной, высотой и форматом, использующее существующий буфер памяти 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)
Создаёт изображение с заданной шириной, высотой и форматом, использующее существующий буфер только для чтения 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)
Создаёт изображение с заданной шириной, высотой и форматом, использующее существующий буфер памяти data. Ширина и высота должны быть указаны в пикселях, data должен быть выровнен по 32 битам, а каждая строка данных изображения также должна быть выровнена по 32 битам.
Буфер должен оставаться валидным на протяжении всего жизненного цикла QImage и всех его копий, которые не были изменены или каким-либо образом отделены от исходного буфера. Изображение не удаляет буфер при уничтожении. Вы можете предоставить указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.
Если format является форматом индексированного цвета, таблица цветов изображения изначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.
QImage::QImage(int width, int height, QImage::Format format)
Создаёт изображение с заданной шириной, высотой и форматом.
Если память не может быть выделена, будет возвращено изображение null.
Предупреждение: Это создаст QImage с неинициализированными данными. Вызовите fill(), чтобы заполнить изображение соответствующим значением пикселя перед рисованием на нём с помощью QPainter.
QImage::QImage(const QSize &size, QImage::Format 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)
Отсоединяет и преобразует изображение в указанный формат на месте.
Указанные флаги преобразования изображений flags контролируют, как обрабатываются данные изображения во время процесса преобразования.
Эта функция была добавлена в Qt 5.13.
См. также convertToFormat().
void QImage::convertToColorSpace(const QColorSpace &colorSpace)
Преобразует изображение в colorSpace.
Если у изображения нет допустимого цветового пространства, метод ничего не делает.
Эта функция была добавлена в Qt 5.14.
См. также convertedToColorSpace() и setColorSpace().
END_OF_DOCUMENT_MARKERQImage QImage::convertToFormat(QImage::Format format, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
Это перегруженный метод.
Возвращает копию изображения, преобразованного в заданный формат, используя указанную colorTable.
Преобразование из форматов RGB в индексированные форматы — медленная операция и будет использовать простой подход ближайшего цвета без применения дithering.
QImage QImage::convertedToColorSpace(const QColorSpace &colorSpace) const
Возвращает изображение, преобразованное в colorSpace.
Если у изображения нет корректного цветового пространства, возвращается нулевое QImage.
Этот метод был добавлен в Qt 5.14.
См. также convertToColorSpace().
QImage QImage::copy(const QRect &rectangle = QRect()) const
Возвращает подобласть изображения в виде нового изображения.
Возвращаемое изображение копируется из позиции (rectangle.x(), rectangle.y()) в этом изображении и всегда будет иметь размер заданного rectangle.
В областях за пределами этого изображения пиксели устанавливаются в 0. Для 32-битных изображений RGB это означает черный цвет; для 32-битных изображений ARGB это означает прозрачный черный; для 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-битный маску из буфера альфа-канала в этом изображении. Возвращает нулевое изображение, если формат изображения — QImage::Format_RGB32.
Аргумент flags — побитовое ИЛИ флагов Qt::ImageConversionFlags и управляет процессом преобразования. Передача 0 для flags устанавливает все значения по умолчанию.
Возвращаемое изображение имеет порядок битов little-endian (т.е. формат изображения QImage::Format_MonoLSB), который можно преобразовать в big-endian (QImage::Format_Mono) с помощью функции convertToFormat().
См. также createHeuristicMask() и Преобразования изображений.
QImage 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)
Это перегруженный метод.
Заполняет изображение заданным цветом, представленным стандартным глобальным цветом.
Этот метод был добавлен в Qt 4.8.
QImage::Format QImage::format() const
Возвращает формат изображения.
См. также Форматы изображений.
QImage QImage::fromData(const uchar *data, int size, const char *format = nullptr)
Создаёт QImage из первых size байт заданных двоичных данных. Загрузчик пытается прочитать изображение с использованием указанного формата. Если формат не указан (по умолчанию), загрузчик анализирует данные, чтобы определить формат файла.
Если формат указан, он должен быть одним из значений, возвращаемых QImageReader::supportedImageFormats().
Если загрузка изображения завершается неудачно, возвращается нулевое изображение.
См. также load(), save() и Чтение и запись файлов изображений.
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 бита. По умолчанию mode равен 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().
Имя файла может ссылаться как на фактический файл на диске, так и на один из встроенных ресурсов приложения. Подробнее о том, как встроить изображения и другие файлы ресурсов в исполняемый файл приложения, см. обзор Системы ресурсов.
См. также Чтение и запись файлов изображений.
bool QImage::load(QIODevice *device, const char *format)
Это перегруженный метод.
Эта функция считывает QImage из заданного device. Это можно использовать, например, для загрузки изображения непосредственно в QByteArray.
bool QImage::loadFromData(const uchar *data, int len, const char *format = nullptr)
Загружает изображение из первых len байтов заданных двоичных данных. Возвращает true если изображение было успешно загружено; в противном случае делает изображение недействительным и возвращает false.
Загрузчик пытается прочитать изображение с использованием указанного формата, например, 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 не является допустимым, результаты не определены.
Предупреждение: Эта функция является ресурсоёмкой при использовании для массовой обработки пикселей. Используйте constBits() или constScanLine() при необходимости чтения большого количества пикселей.
См. также setPixel(), valid(), constBits(), constScanLine(), и Обработка пикселей.
QRgb QImage::pixel(int x, int y) const
Это перегруженный метод.
Возвращает цвет пикселя в координатах (x, y).
QColor QImage::pixelColor(const QPoint &position) const
Возвращает цвет пикселя в заданной позиции в виде 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 недопустима или изображение не является палитровым изображением (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 равен nullptr, 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 или отрицательна, возвращается пустое изображение.
См. также Преобразования изображений.
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::setAlphaChannel(const QImage &alphaChannel)
Устанавливает альфа-канал этого изображения на заданный alphaChannel.
Если alphaChannel представляет собой 8-битовое изображение альфа-канала, значения альфа используются непосредственно. В противном случае alphaChannel преобразуется в 8-битовое графика и интенсивность значений пикселей используется.
Если изображение уже имеет альфа-канал, существующий альфа-канал умножается на новый. Если изображение не имеет альфа-канала, оно будет преобразовано в формат, который его содержит.
Операция похожа на рисование alphaChannel как альфа-изображения поверх этого изображения с использованием QPainter::CompositionMode_DestinationIn.
См. также hasAlphaChannel(), alphaChannel(), Преобразования изображений и Форматы изображений.
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
Возвращает размер изображения, т. е. его width() и height().
См. также Информация об изображении.
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
Возвращает текст изображения, связанный с заданным key. Если указанный key — пустая строка, возвращается весь текст изображения, при этом каждая пара ключ-текст разделяется новой строкой.
См. также setText() и textKeys().
QStringList QImage::textKeys() const
Возвращает ключи текста для этого изображения.
Вы можете использовать эти ключи с text(), чтобы вывести текст изображения для определенного ключа.
См. также text().
CGImageRef QImage::toCGImage() const
Создаёт эквивалент этого QImage в CoreGraphics. Возвращает дескриптор 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 |
Другие форматы не поддерживаются; для этих случаев функция возвращает null CGImageRef. Пользователи этой функции могут сначала преобразовать QImage в поддерживаемый формат, например, Format_ARGB32_Premultiplied.
Цветовое пространство CGImageRef установлено в sRGB.
См. также QtMac::toNSImage().
[static] QImage::Format QImage::toImageFormat(QPixelFormat format)
Преобразует format в QImage::Format.
[static] QPixelFormat QImage::toPixelFormat(QImage::Format format)
Преобразует format в QPixelFormat.
QImage QImage::transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает копию изображения, преобразованную с использованием заданной трансформации matrix и режима трансформации mode.
Возвращаемое изображение обычно будет иметь тот же {форматы изображений}{формат}, что и исходное изображение. Однако сложная трансформация может привести к изображению, где не все пиксели покрыты трансформированными пикселями исходного изображения. В таких случаях эти фоновые пиксели будут назначены прозрачному значению цвета, а трансформированному изображению будет присвоен формат с альфа-каналом, даже если исходное изображение этого не имело.
Матрица трансформации matrix внутренне корректируется для компенсации нежелательного смещения; т. е. получаемое изображение — это наименьшее изображение, содержащее все преобразованные точки исходного изображения. Используйте функцию trueMatrix(), чтобы получить фактическую матрицу, используемую для преобразования изображения.
В отличие от других перегрузок, эту функцию можно использовать для выполнения перспективных преобразований изображений.
См. также trueMatrix() и Преобразования изображений.
[static] QTransform QImage::trueMatrix(const QTransform &matrix, int width, int height)
Возвращает фактическую матрицу, используемую для преобразования изображения с заданной шириной, высотой и матрицей.
При преобразовании изображения с помощью функции 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.15/qimage.html