Spec-Zone.ru › Qt 6.0

Класс QImage

Класс QImage предоставляет аппаратно-независимое представление изображения, позволяющее напрямую обращаться к данным пикселей и использовать его в качестве устройства рисования. Подробнее...

Заголовок: #include <QImage>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
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, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
QImage(uchar *data, int width, int height, qsizetype bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr)
QImage(const 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
qsizetype bytesPerLine() const
qint64 cacheKey() const
QRgb color(int i) const
int colorCount() const
QColorSpace colorSpace() const
QList<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 QList<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const
QImage convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) const &
QImage convertedTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor) &&
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)
END_OF_DOCUMENT_MARKER
void mirror(bool horizontal = false, bool vertical = true)
QImage mirrored(bool horizontal = false, bool vertical = true) const &
QImage mirrored(bool horizontal = false, bool vertical = true) &&
QPoint смещение() const
QRgb pixel(const QPoint &position) const
QRgb pixel(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)
void переместитьRGB()
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 QList<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
HBITMAP вHBITMAP() const
HICON вHICON(const QImage &mask = {}) 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 operator QVariant() const
bool не равно(const QImage &image) const
bool равно(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 fromHBITMAP(HBITMAP hbitmap)
QImage fromHICON(HICON icon)
QImage::Format toImageFormat(QPixelFormat format)
QPixelFormat toPixelFormat(QImage::Format format)
QTransform trueMatrix(const QTransform &matrix, int width, int height)

Related Non-Members

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

Detailed Description

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 для получения подробной информации о том, как встраивать изображения и другие файлы ресурсов в исполняемый файл приложения.

Для сохранения объекта 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 (MSB вначале) или little endian (LSB вначале) порядок битов.

8-битные изображения хранятся с использованием 8-битных индексов в таблице цветов, то есть у них один байт на пиксель. Таблица цветов является QList<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, Пример композиции изображений, Пример просмотрщика изображений, Пример Scribble и Пример Pixelator.

Документация по типам членов

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().

перечисление QImage::InvertMode

Это тип перечисления используется для описания того, как значения пикселей должны быть инвертированы в функции invertPixels().

Постоянная Значение Описание
QImage::InvertRgb 0 Инвертировать только значения RGB и оставить альфа-канал без изменений.
QImage::InvertRgba 1 Инвертировать все каналы, включая альфа-канал.

См. также invertPixels().

Документация по функциям-членам

QImage QImage::rgbSwapped() &&

QImage QImage::rgbSwapped() const &

Возвращает QImage, в котором значения красного и синего компонентов всех пикселей поменяны местами, фактически преобразовывая изображение RGB в изображение BGR.

Исходный QImage не изменяется.

См. также rgbSwap() и Преобразования изображений.

QImage QImage::mirrored(bool horizontal = false, bool vertical = true) &&

QImage QImage::mirrored(bool horizontal = false, bool vertical = true) const &

Возвращает отражённое изображение, отражённое по горизонтали и/или по вертикали в зависимости от того, установлены ли horizontal и vertical в значение true или false.

Обратите внимание, что исходное изображение не изменяется.

См. также mirror() и Преобразования изображений.

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

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

Возвращает копию изображения в заданном формате format.

Указанные флаги преобразования изображений управляют тем, как данные изображения обрабатываются во время процесса преобразования.

Эта функция была добавлена в Qt 6.0.

См. также convertTo() и Форматы изображений.

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 контролируют, как обрабатываются данные изображения во время процесса преобразования.

См. также convertTo() и Форматы изображений.

[since 5.2] 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}.

Если загрузка изображения не удалась, этот объект — пустое изображение.

Имя файла может ссылаться на фактический файл на диске или на один из встроенных ресурсов приложения. См. обзор Системы ресурсов для получения информации о том, как встраивать изображения и другие файлы ресурсов в исполняемый файл приложения.

См. также isNull() и Чтение и запись файлов изображений.

QImage::QImage(const char *const [] xpm)

Создаёт изображение из заданного изображения xpm.

Убедитесь, что изображение является допустимым изображением XPM. Ошибки игнорируются.

Обратите внимание, что можно немного сжать переменную XPM, используя необычное объявление:

static const char * const start_xpm[] = {
    "16 15 8 1",
    "a c #cec6bd",
    // etc.
};

Дополнительный const делает всё определение только для чтения, что немного эффективнее (например, когда код находится в общей библиотеке) и может храниться в ПЗУ вместе с приложением.

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

Создаёт изображение с заданной шириной width, высотой height и форматом format, использующее имеющийся буфер памяти data. Ширина и высота должны быть указаны в пикселях. bytesPerLine указывает количество байт в строке (шаг).

Буфер должен оставаться допустимым на протяжении всего жизненного цикла QImage и всех копий, которые не были изменены или каким-либо образом отсоединены от исходного буфера. Изображение не удаляет буфер при уничтожении. Вы можете указать указатель на функцию cleanupFunction вместе с дополнительным указателем cleanupInfo, которые будут вызваны при уничтожении последней копии.

Если format — формат индексированного цвета, таблица цветов изображения первоначально пуста и должна быть достаточно расширена с помощью setColorCount() или setColorTable() перед использованием изображения.

В отличие от аналогичного конструктора QImage, принимающего буфер данных, который не является константным, этот вариант никогда не изменяет содержимое буфера. Например, вызов QImage::bits() вернёт глубокую копию изображения, а не буфер, переданный в конструктор. Это позволяет эффективно создавать QImage из исходных данных без возможности изменения исходных данных.

QImage::QImage(uchar *data, int width, int height, qsizetype 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, принимающего буфер данных, который не является константным, этот вариант никогда не изменяет содержимое буфера. Например, вызов 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.

Если память не может быть выделена, будет возвращено пустое изображение.

Предупреждение: Это создаст QImage с неинициализированными данными. Вызовите fill(), чтобы заполнить изображение подходящим значением пикселя перед отрисовкой на нём с помощью QPainter.

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

Создаёт изображение с заданным размером size и форматом format.

Если память не может быть выделена, возвращается пустое изображение.

Предупреждение: Это создаст QImage с неинициализированными данными. Вызовите fill(), чтобы заполнить изображение подходящим значением пикселя перед отрисовкой на нём с помощью QPainter.

QImage::QImage()

Создаёт пустое изображение.

См. также isNull().

[since 5.2] QImage &QImage::operator=(QImage &&other)

Перемещает присваивание other текущему экземпляру QImage.

Эта функция была добавлена в Qt 5.2.

QImage &QImage::operator=(const QImage &image)

Присваивает неглубокую копию заданного изображения image текущему изображению и возвращает ссылку на это изображение.

Дополнительную информацию о неглубоких копиях см. в документации Неявное совместное использование данных.

См. также copy() и QImage().

[virtual] QImage::~QImage()

Уничтожает изображение и очищает память.

bool QImage::allGray() const

Возвращает true если все цвета в изображении являются оттенками серого (т.е. их компоненты красного, зеленого и синего равны); в противном случае возвращает false.

Обратите внимание, что эта функция медленная для изображений без таблицы цветов.

См. также isGrayscale().

[since 5.14] void QImage::applyColorTransform(const QColorTransform &transform)

Применяет преобразование цвета transform ко всем пикселям изображения.

Эта функция была добавлена в Qt 5.14.

int QImage::bitPlaneCount() const

Возвращает количество плоскостей битов в изображении.

Количество плоскостей битов — это количество бит информации о цвете и прозрачности для каждого пикселя. Это отличается от (т. е. меньше) глубины, когда формат изображения содержит неиспользуемые биты.

См. также depth(), format() и Форматы изображений.

uchar *QImage::bits()

Возвращает указатель на данные первого пикселя. Это эквивалентно scanLine(0).

Обратите внимание, что QImage использует неявное совместное использование данных. Эта функция выполняет глубокую копию общих данных пикселей, тем самым гарантируя, что данный QImage — единственный, использующий текущее возвращаемое значение.

См. также scanLine(), sizeInBytes() и constBits().

const uchar *QImage::bits() const

Это перегруженная функция.

Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные являются константными.

qsizetype 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.

См. также setColorCount() и Информация об изображении.

[since 5.14] QColorSpace QImage::colorSpace() const

Возвращает цветовое пространство изображения, если оно определено.

Эта функция была добавлена в Qt 5.14.

См. также setColorSpace().

QList<QRgb> QImage::colorTable() const

Возвращает список цветов, содержащихся в таблице цветов изображения, или пустой список, если у изображения нет таблицы цветов.

См. также setColorTable(), colorCount() и color().

const uchar *QImage::constBits() const

Возвращает указатель на данные первого пикселя.

Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные являются константными.

См. также bits() и constScanLine().

const uchar *QImage::constScanLine(int i) const

Возвращает указатель на данные пикселей в строке сканирования с индексом i. Первая строка сканирования имеет индекс 0.

Данные строки сканирования выровнены как минимум на 32 бита. Для 64-битных форматов используется родное выравнивание 64-битных целых чисел (64 бита для большинства платформ, но, например, 32 бита на i386).

Обратите внимание, что QImage использует неявное совместное использование данных, но эта функция не выполняет глубокую копию общих данных пикселей, потому что возвращаемые данные являются константными.

См. также scanLine() и constBits().

[since 5.13] void QImage::convertTo(QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor)

Отсоединить и преобразовать изображение в заданный формат на месте.

Указанные флаги преобразования изображений flags управляют обработкой данных изображения во время процесса преобразования.

Эта функция была добавлена в Qt 5.13.

См. также convertedTo().

[since 5.14] void QImage::convertToColorSpace(const QColorSpace &colorSpace)

Преобразует изображение в colorSpace.

Если у изображения нет допустимого цветового пространства, метод ничего не делает.

Эта функция была добавлена в Qt 5.14.

См. также convertedToColorSpace() и setColorSpace().

QImage QImage::convertToFormat(QImage::Format format, const QList<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const

Это перегруженная функция.

Возвращает копию изображения, преобразованного в заданный формат, используя указанную colorTable.

Преобразование из RGB-форматов в индексированные форматы — медленная операция и будет использовать прямой подход ближайшего цвета без применения дithering.

[since 5.14] 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 устанавливает все значения по умолчанию.

Возвращаемое изображение имеет порядок бит «малый конец» (т. е. формат изображения — QImage::Format_MonoLSB), который можно преобразовать в порядок «большой конец» (QImage::Format_Mono) с помощью функции convertToFormat().

См. также createHeuristicMask() и Преобразования изображений.

QImage QImage::createHeuristicMask(bool clipTight = true) const

Создаёт и возвращает эвристическую маску 1 бита на пиксель для этого изображения.

Функция работает путём выбора цвета из одного из углов, а затем удаления пикселей этого цвета, начиная с краёв. Четыре угла голосуют за то, какой цвет должен быть замаскирован. В случае ничьи (это обычно означает, что эта функция не применима к изображению), результат произвольный.

Возвращаемое изображение имеет порядок бит «малый конец» (т. е. формат изображения — QImage::Format_MonoLSB), который можно преобразовать в порядок «большой конец» (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.

void QImage::fill(Qt::GlobalColor color)

Это перегруженная функция.

Заполняет изображение заданным цветом color, описываемым как стандартный глобальный цвет.

QImage::Format QImage::format() const

Возвращает формат изображения.

См. также Форматы изображений.

QImage QImage::fromData(const uchar *data, int size, const char *format = nullptr)

Создаёт QImage из первых size байт заданных двоичных данных data. Загрузчик пытается прочитать изображение с помощью заданного формата format. Если format не указан (по умолчанию), загрузчик анализирует данные, чтобы определить формат файла.

Если format указан, он должен быть одним из значений, возвращаемых QImageReader::supportedImageFormats().

Если загрузка изображения завершается ошибкой, возвращаемое изображение будет пустым.

См. также load(), save() и Чтение и запись файлов изображений.

QImage QImage::fromData(const QByteArray &data, const char *format = nullptr)

Это перегруженная функция.

Загружает изображение из заданного QByteArray data.

QImage QImage::fromHBITMAP(HBITMAP hbitmap)

Возвращает QImage, эквивалентную заданному hbitmap.

HBITMAP не хранит информацию об альфа-канале.

В стандартном случае альфа-канал игнорируется, и создаётся полностью непрозрачное изображение (обычно с форматом QImage::Format_RGB32).

Однако есть случаи, когда альфа-канал используется, например, для значков приложений или значков системного трея. В этом случае необходимо вызвать reinterpretAsFormat(QImage::Format_ARGB32) для возвращаемого изображения, чтобы гарантировать правильность формата.

Эта функция была добавлена в Qt 6.0.

См. также toHBITMAP() и reinterpretAsFormat().

QImage QImage::fromHICON(HICON icon)

Возвращает QImage, эквивалентную заданному icon.

Эта функция была добавлена в Qt 6.0.

См. также toHICON().

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, если это изображение null, в противном случае возвращает false.

Изображение null имеет все параметры, установленные в ноль, и не содержит выделенных данных.

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

Загружает изображение из файла с заданным именем fileName. Возвращает true, если изображение было успешно загружено; в противном случае делает изображение недействительным и возвращает false.

Загрузчик пытается прочитать изображение, используя указанный формат, например PNG или JPG. Если формат не указан (что является значением по умолчанию), он автоматически определяется на основе суффикса и заголовка файла. Подробности см. в 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 байтов указанных двоичных данных data. Возвращает true, если изображение было успешно загружено; в противном случае делает изображение недействительным и возвращает false.

Загрузчик пытается прочитать изображение, используя указанный формат, например PNG или JPG. Если формат не указан (что является значением по умолчанию), загрузчик исследует файл на наличие заголовка, чтобы определить формат файла.

См. также Чтение и запись файлов изображений.

bool QImage::loadFromData(const QByteArray &data, const char *format = nullptr)

Это перегруженная функция.

Загружает изображение из указанного QByteArray data.

[since 6.0] void QImage::mirror(bool horizontal = false, bool vertical = true)

Отражает изображение по горизонтали и/или вертикали в зависимости от того, установлены ли horizontal и vertical в true или false.

Эта функция была введена в Qt 6.0.

См. также mirrored() и Преобразования изображений.

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).

[since 5.6] QColor QImage::pixelColor(const QPoint &position) const

Возвращает цвет пикселя в заданной position как QColor.

Если position недействительна, возвращается недействительный QColor.

Предупреждение: Эта функция является дорогостоящей при использовании для массовой обработки пикселей. Используйте constBits() или constScanLine(), когда необходимо обработать много пикселей.

Эта функция была введена в Qt 5.6.

См. также setPixelColor(), setPixel(), valid(), constBits(), constScanLine(), и Обработка пикселей.

[since 5.6] 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()).

См. также Информация об изображении.

[since 5.9] bool QImage::reinterpretAsFormat(QImage::Format format)

Изменяет формат изображения на format без изменения данных. Действует только между форматами с одинаковой глубиной.

Возвращает true при успехе.

Эта функция может быть использована для изменения изображений с альфа-каналами на соответствующие непрозрачные форматы, если известно, что данные являются только непрозрачными, или для изменения формата заданного буфера изображения перед перезаписью его новыми данными.

Предупреждение: Функция не проверяет, являются ли данные изображения допустимыми в новом формате, и по-прежнему вернёт true, если глубины совместимы. Операции с изображением с недопустимыми данными не определены.

Предупреждение: Если изображение не отделено, это приведёт к копированию данных.

Эта функция была введена в Qt 5.9.

См. также hasAlphaChannel() и convertToFormat().

[since 6.0] void QImage::rgbSwap()

Меняет местами значения красного и синего компонентов всех пикселей, эффективно преобразуя RGB-изображение в BGR-изображение.

Эта функция была введена в Qt 6.0.

См. также rgbSwapped() и Преобразования изображений.

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 в указанное устройство.

Это можно использовать, например, для сохранения изображения непосредственно в 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).

Например, чтобы удалить зелёный компонент каждого пикселя в изображении:

for (int y = 0; y < image.height(); ++y) {
    QRgb *line = reinterpret_cast<QRgb*>(image.scanLine(y));
    for (int x = 0; x < image.width(); ++x) {
        QRgb &rgb = line[x];
        rgb = qRgba(qRed(rgb), qGreen(0), qBlue(rgb), qAlpha(rgb));
    }
}

Предупреждение: Если вы обращаетесь к данным изображения 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(), Преобразования изображений и Форматы изображений.

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)).

При использовании изображения таблица цветов должна быть достаточно большой, чтобы содержать записи для всех значений пикселя/индекса, присутствующих в изображении; в противном случае результаты будут неопределёнными.

См. также colorCount(), colorTable(), setColor() и Преобразования изображений.

[since 5.14] void QImage::setColorSpace(const QColorSpace &colorSpace)

Устанавливает цветовое пространство изображения на colorSpace без выполнения каких-либо преобразований данных изображения.

Этот метод был введён в Qt 5.14.

См. также colorSpace().

void QImage::setColorTable(const QList<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() Конечным результатом этого является отображение изображения как изображения с высокой DPI вместо большого изображения (см. Вывод высококачественных версий растровых изображений и изображений).

См. также devicePixelRatio().

void QImage::setDotsPerMeterX(int x)

Устанавливает количество пикселей, приходящихся на один физический метр по горизонтали, в x.

Вместе с dotsPerMeterY() это число определяет предполагаемый масштаб и соотношение сторон изображения и определяет масштаб, с которым QPainter будет рисовать графику на изображении. Оно не изменяет масштаб или соотношение сторон изображения при рендеринге на других устройствах рисования.

См. также dotsPerMeterX() и Информация об изображении.

void QImage::setDotsPerMeterY(int y)

Устанавливает количество пикселей, приходящихся на один физический метр по вертикали, в y.

Вместе с dotsPerMeterX() это число определяет предполагаемый масштаб и соотношение сторон изображения и определяет масштаб, с которым QPainter будет рисовать графику на изображении. Оно не изменяет масштаб или соотношение сторон изображения при рендеринге на других устройствах рисования.

END_OF_DOCUMENT_MARKER

См. также 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.

[since 5.6] void QImage::setPixelColor(const QPoint &position, const QColor &color)

Устанавливает цвет в заданной position на color.

Если position не является корректной парой координат в изображении или формат изображения — монохромный или палитровый, результат неопределён.

Предупреждение: Эта функция является дорогостоящей из-за вызова внутренней функции detach(); если производительность имеет значение, рекомендуется использовать scanLine() или bits() для прямого доступа к данным пикселей.

Функция была добавлена в Qt 5.6.

См. также pixelColor(), pixel(), bits(), scanLine() и Обработка пикселей.

[since 5.6] 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

Возвращает размер изображения, т.е. его ширину() и высоту().

См. также Информация об изображении.

[since 5.10] qsizetype QImage::sizeInBytes() const

Возвращает размер данных изображения в байтах.

Функция была добавлена в Qt 5.10.

См. также bytesPerLine(), bits() и Информация об изображении.

void QImage::swap(QImage &other)

Меняет местами изображение other с этим изображением. Эта операция очень быстрая и никогда не терпит неудачу.

QString QImage::text(const QString &key = QString()) const

Возвращает текст изображения, связанный с заданным key. Если заданный key — пустая строка, возвращается весь текст изображения, где каждая пара ключ-текст отделена новой строкой.

См. также 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

Другие форматы не поддерживаются; для этих случаев эта функция возвращает null CGImageRef. Пользователи этой функции могут сначала преобразовать QImage в поддерживаемый формат, например Format_ARGB32_Premultiplied.

Цветовое пространство CGImageRef устанавливается в цветовое пространство sRGB.

[since 6.0] HBITMAP QImage::toHBITMAP() const

Создаёт HBITMAP эквивалент QImage.

Возвращает HBITMAP дескриптор.

Ответственность за освобождение HBITMAP данных после использования лежит на вызывающей стороне.

Для использования со стандартными вызовами GDI, такими как BitBlt(), изображение должно иметь формат QImage::Format_RGB32.

При использовании полученного HBITMAP для функции GDI AlphaBlend(), изображение должно иметь формат QImage::Format_ARGB32_Premultiplied (используйте convertToFormat()).

При использовании полученного HBITMAP в качестве значка приложения или значка системного трея изображение должно иметь формат QImage::Format_ARGB32.

Функция была добавлена в Qt 6.0.

См. также fromHBITMAP() и convertToFormat().

[since 6.0] HICON QImage::toHICON(const QImage &mask = {}) const

Создаёт HICON эквивалент QPixmap, применяя маску mask.

Если mask не null, она должна иметь формат QImage::Format_Mono. Возвращает HICON дескриптор.

Ответственность за освобождение HICON данных после использования лежит на вызывающей стороне.

Функция была добавлена в Qt 6.0.

См. также fromHICON().

[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

Возвращает копию изображения, преобразованного с использованием заданной трансформации матрицы и режима трансформации режима.

Возвращаемое изображение обычно будет иметь тот же {Форматы изображений}{формат}, что и исходное изображение. Однако сложная трансформация может привести к изображению, где не все пиксели покрыты преобразованными пикселями исходного изображения. В таких случаях этим фоновым пикселям будет назначено значение прозрачного цвета, а преобразованному изображению будет присвоен формат с альфа-каналом, даже если исходное изображение его не имело.

Трансформация матрицы внутренне корректируется для компенсации нежелательного смещения; т.е. полученное изображение — это наименьшее изображение, содержащее все преобразованные точки исходного изображения. Используйте функцию 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=().

Связанные нечлен-функции

[since 5.0] QImageCleanupFunction

Функция со следующей сигнатурой, которая может быть использована для реализации базового управления памятью изображения:

void myImageCleanupHandler(void *info);

Этот typedef был введён в Qt 5.0.

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

Записывает заданное изображение в заданный поток как изображение PNG или как изображение BMP, если версия потока равна 1. Обратите внимание, что запись потока в файл не создаст действительный файл изображения.

См. также QImage::save() и Сериализация типов данных Qt.

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

Читает изображение из заданного потока и сохраняет его в заданном изображении.

См. также QImage::load() и Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qimage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API