Spec-Zone.ru › Qt 5.12

Класс QImageIOHandler

Класс QImageIOHandler определяет общий интерфейс ввода-вывода изображений для всех форматов изображений в Qt. Подробнее...

Заголовок: #include <QImageIOHandler>
qmake: QT += gui
  • Список всех членов, включая наследуемые
  • Устаревшие члены

Примечание: Все функции в этом классе являются повторно входящими.

Открытые типы

перечисление ImageOption { Размер, ОбластьВырезки, МасштабированныйРазмер, МасштабированнаяОбластьВырезки, ..., ПреобразованныйПоУмолчанию }
перечисление Transformation { ПреобразованиеОтсутствует, ПреобразованиеЗеркалирование, ПреобразованиеПереворот, ПреобразованиеПоворотНа180, ..., ПреобразованиеПоворотНа270 }
флаги Преобразования

Открытые функции

QImageIOHandler()
виртуальный ~QImageIOHandler()
виртуальный bool canRead() const = 0
виртуальный int currentImageNumber() const
виртуальный QRect currentImageRect() const
QIODevice * device() const
QByteArray format() const
виртуальный int imageCount() const
виртуальный bool jumpToImage(int imageNumber)
виртуальный bool jumpToNextImage()
виртуальный int loopCount() const
виртуальный int nextImageDelay() const
виртуальный QVariant option(QImageIOHandler::ImageOption option) const
виртуальный bool read(QImage *image) = 0
void setDevice(QIODevice *device)
void setFormat(const QByteArray &format)
void setFormat(const QByteArray &format) const
виртуальный void setOption(QImageIOHandler::ImageOption option, const QVariant &value)
виртуальный bool supportsOption(QImageIOHandler::ImageOption option) const
виртуальный bool write(const QImage &image)

Защищенные переменные

int d_ptr

Подробное описание

Класс QImageIOHandler определяет общий интерфейс ввода-вывода изображений для всех форматов изображений в Qt.

Qt использует QImageIOHandler для чтения и записи изображений через QImageReader и QImageWriter. Вы также можете наследовать от этого класса, чтобы написать свой обработчик формата изображения с использованием механизма плагинов Qt.

Вызовите setDevice(), чтобы назначить устройство обработчику, и setFormat(), чтобы назначить формат. Один QImageIOHandler может поддерживать более одного формата изображения. canRead() возвращает true , если изображение может быть прочитано из устройства, а read() и write() возвращают true, если чтение или запись изображения были выполнены успешно.

QImageIOHandler также поддерживает форматы анимаций через функции loopCount(), imageCount(), nextImageDelay() и currentImageNumber().

Для определения поддерживаемых опций обработчика изображений Qt будет вызывать supportsOption() и setOption(). Убедитесь, что переопределили эти функции, если вы можете предоставить поддержку любой из опций в перечислении ImageOption.

Чтобы написать свой собственный обработчик изображений, вы должны по меньшей мере переопределить canRead() и read(). Затем создайте QImageIOPlugin, который может создать обработчик. Наконец, установите свой плагин, и QImageReader и QImageWriter автоматически загрузит плагин и начнёт его использовать.

См. также QImageIOPlugin, QImageReader и QImageWriter.

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

перечисление QImageIOHandler::ImageOption

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

Постоянная Значение Описание
QImageIOHandler::Size 0 Исходный размер изображения. Обработчик, поддерживающий этот параметр, должен считывать размер изображения из метаданных изображения и возвращать этот размер из option() в виде QSize.
QImageIOHandler::ClipRect 1 Прямоугольник обрезки или ROI (Region Of Interest). Обработчик, поддерживающий этот параметр, должен считывать только заданную область QRect из исходного изображения в read() до применения любых других преобразований.
QImageIOHandler::ScaledSize 4 Масштабированный размер изображения. Обработчик, поддерживающий этот параметр, должен масштабировать изображение до заданного размера (a QSize) после применения любого преобразования обрезки (ClipRect). Если обработчик не поддерживает этот параметр, QImageReader выполнит масштабирование после считывания изображения.
QImageIOHandler::ScaledClipRect 3 Масштабированный прямоугольник обрезки (или ROI, Region Of Interest) изображения. Обработчик, поддерживающий этот параметр, должен применить заданный прямоугольник обрезки (a QRect) после применения любого масштабирования (ScaleSize) или обычной обрезки (ClipRect). Если обработчик не поддерживает этот параметр, QImageReader применит масштабированный прямоугольник обрезки после считывания изображения.
QImageIOHandler::Description 2 Описание изображения. Некоторые форматы изображений, такие как GIF и PNG, позволяют встраивать текст или комментарии в данные изображения (например, для хранения информации об авторских правах). Часто текст хранится в формате пар ключ-значение, но некоторые форматы хранят весь текст в одном непрерывном блоке. QImageIOHandler возвращает текст как один QString, где ключи и значения разделены двоеточием, а пары ключ-значение разделены двумя символами новой строки (\n\n). Например, "Title: Sunset\n\nAuthor: Jim Smith\nSarah Jones\n\n". Форматы, которые хранят текст в одном блоке, могут использовать "Description" в качестве ключа.
QImageIOHandler::CompressionRatio 5 Коэффициент сжатия данных изображения. Обработчик, поддерживающий этот параметр, должен установить скорость сжатия в зависимости от значения этого параметра (целое число) при записи.
QImageIOHandler::Gamma 6 Уровень гаммы изображения. Обработчик, поддерживающий этот параметр, должен установить уровень гаммы изображения в зависимости от значения этого параметра (вещественное число) при записи.
QImageIOHandler::Quality 7 Уровень качества изображения. Обработчик, поддерживающий этот параметр, должен установить уровень качества изображения в зависимости от значения этого параметра (целое число) при записи.
QImageIOHandler::Name 8 Имя изображения. Обработчик, поддерживающий этот параметр, должен считывать имя из метаданных изображения и возвращать его в виде QString, а при записи изображения он должен сохранять имя в метаданных изображения.
QImageIOHandler::SubType 9 Подтип изображения. Обработчик, поддерживающий этот параметр, может использовать значение подтипа для помощи при чтении и записи изображений. Например, обработчик PPM может иметь значение подтипа "ppm" или "ppmraw".
QImageIOHandler::IncrementalReading 10 Обработчик, поддерживающий этот параметр, должен считывать изображение в несколько проходов, как если бы это была анимация. QImageReader будет рассматривать изображение как анимацию.
QImageIOHandler::Endianness 11 Порядок байтов изображения. Некоторые форматы изображений могут храниться как BigEndian или LittleEndian. Обработчик, поддерживающий порядок байтов, использует значение этого параметра для определения того, как должно храниться изображение.
QImageIOHandler::Animation 12 Форматы изображений, которые поддерживают анимацию, возвращают true для этого значения в supportsOption(); в противном случае возвращается false.
QImageIOHandler::BackgroundColor 13 Некоторые форматы изображений позволяют указать цвет фона. Обработчик, поддерживающий BackgroundColor, инициализирует цвет фона этим параметром (a QColor) при чтении изображения.
QImageIOHandler::ImageFormat 14 Формат данных изображения, возвращаемый обработчиком. Он может быть любым из форматов, перечисленных в QImage::Format.
QImageIOHandler::SupportedSubTypes 15 Форматы изображений, которые поддерживают различные варианты сохранения, должны возвращать список поддерживаемых имён вариантов (QList<QByteArray>) в этом параметре.
QImageIOHandler::OptimizedWrite 16 Обработчик, который поддерживает этот параметр, должен включить флаги оптимизации при записи.
QImageIOHandler::ProgressiveScanWrite 17 Обработчик, который поддерживает этот параметр, должен записать изображение как изображение с прогрессивной разверткой.
QImageIOHandler::ImageTransformation 18 Обработчик, который поддерживает этот параметр, может читать метаданные преобразования изображения. Обработчик, который поддерживает этот параметр, не должен применять преобразование сам.
QImageIOHandler::TransformedByDefault 19 Обработчик, который сообщает о поддержке этой функции, будет применять метаданные преобразования изображения по умолчанию при чтении.

enum QImageIOHandler::Transformationflags QImageIOHandler::Transformations

Этот перечисление описывает различные преобразования или ориентации, поддерживаемые некоторыми форматами изображений, обычно через EXIF.

Постоянная Значение Описание
QImageIOHandler::TransformationNone 0 Не должно быть применено никаких преобразований.
QImageIOHandler::TransformationMirror 1 Отразить изображение по горизонтали.
QImageIOHandler::TransformationFlip 2 Отразить изображение по вертикали.
QImageIOHandler::TransformationRotate180 TransformationMirror | TransformationFlip Повернуть изображение на 180 градусов. Это то же самое, что отразить его и по горизонтали, и по вертикали.
QImageIOHandler::TransformationRotate90 4 Повернуть изображение на 90 градусов.
QImageIOHandler::TransformationMirrorAndRotate90 TransformationMirror | TransformationRotate90 Отразить изображение по горизонтали, а затем повернуть его на 90 градусов.
QImageIOHandler::TransformationFlipAndRotate90 TransformationFlip | TransformationRotate90 Отразить изображение по вертикали, а затем повернуть его на 90 градусов.
QImageIOHandler::TransformationRotate270 TransformationRotate180 | TransformationRotate90 Повернуть изображение на 270 градусов. Это то же самое, что отразить его и по горизонтали, и по вертикали, и затем повернуть на 90 градусов.

Это перечисление было добавлено или изменено в Qt 5.5.

Тип Transformations — это typedef для QFlags<Transformation>. Он хранит логическое ИЛИ комбинацию значений Transformation.

См. также QImageReader::transformation(), QImageReader::setAutoTransform(), и QImageWriter::setTransformation().

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

QImageIOHandler::QImageIOHandler()

Создаёт объект QImageIOHandler.

[virtual] QImageIOHandler::~QImageIOHandler()

Уничтожает объект QImageIOHandler.

[pure virtual] bool QImageIOHandler::canRead() const

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

При переопределении canRead() убедитесь, что устройство ввода-вывода (device()) оставлено в исходном состоянии (например, с помощью peek(), а не read()).

См. также read() и QIODevice::peek().

[virtual] int QImageIOHandler::currentImageNumber() const

Для форматов изображений, которые поддерживают анимацию, эта функция возвращает номер последовательности текущего изображения в анимации. Если эта функция вызывается до чтения любого изображения, возвращается -1. Номер первого изображения в последовательности — 0.

Если формат изображения не поддерживает анимацию, возвращается 0.

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

[virtual] QRect QImageIOHandler::currentImageRect() const

Возвращает прямоугольник текущего изображения. Если для изображения прямоугольник не определен, возвращается пустой QRect().

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

QIODevice *QImageIOHandler::device() const

Возвращает устройство, назначенное в данный момент обработчику QImageIOHandler. Если устройство не назначено, возвращается 0.

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

QByteArray QImageIOHandler::format() const

Возвращает формат, назначенный в данный момент обработчику QImageIOHandler. Если формат не назначен, возвращается пустая строка.

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

[virtual] int QImageIOHandler::imageCount() const

Для форматов изображений, поддерживающих анимацию, эта функция возвращает количество изображений в анимации. Если формат изображения не поддерживает анимацию или не может определить количество изображений, возвращается 0.

Реализация по умолчанию возвращает 1, если canRead() возвращает true; в противном случае возвращается 0.

[virtual] bool QImageIOHandler::jumpToImage(int imageNumber)

Для форматов изображений, поддерживающих анимацию, эта функция переходит к изображению с порядковым номером imageNumber. Следующий вызов read() попытается прочитать это изображение.

Реализация по умолчанию ничего не делает и возвращает false.

[virtual] bool QImageIOHandler::jumpToNextImage()

Для форматов изображений, поддерживающих анимацию, эта функция переходит к следующему изображению.

Реализация по умолчанию ничего не делает и возвращает false.

[virtual] int QImageIOHandler::loopCount() const

Для форматов изображений, поддерживающих анимацию, эта функция возвращает количество циклов анимации. Если формат изображения не поддерживает анимацию, возвращается 0.

[virtual] int QImageIOHandler::nextImageDelay() const

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

[virtual] QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const

Возвращает значение, назначенное для option, как QVariant. Тип значения зависит от параметра. Например, option(Size) возвращает QSize variant.

См. также setOption() и supportsOption().

[pure virtual] bool QImageIOHandler::read(QImage *image)

Читает изображение из устройства и сохраняет его в image. Возвращает true если изображение успешно прочитано; в противном случае возвращает false.

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

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

void QImageIOHandler::setDevice(QIODevice *device)

Устанавливает устройство обработчика QImageIOHandler в device. Обработчик будет использовать это устройство при чтении и записи изображений.

Устройство может быть установлено только один раз и должно быть установлено перед вызовом canRead(), read(), write() и т.д. Если вам нужно читать несколько файлов, создайте несколько экземпляров соответствующего подкласса QImageIOHandler.

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

void QImageIOHandler::setFormat(const QByteArray &format)

Устанавливает формат обработчика QImageIOHandler в format. Формат наиболее полезен для обработчиков, поддерживающих несколько форматов изображений.

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

void QImageIOHandler::setFormat(const QByteArray &format) const

Устанавливает формат обработчика QImageIOHandler в format. Формат наиболее полезен для обработчиков, поддерживающих несколько форматов изображений.

Эта функция объявлена как const, чтобы её можно было вызывать из canRead().

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

[virtual] void QImageIOHandler::setOption(QImageIOHandler::ImageOption option, const QVariant &value)

Устанавливает параметр option со значением value.

См. также option() и ImageOption.

[virtual] bool QImageIOHandler::supportsOption(QImageIOHandler::ImageOption option) const

Возвращает true если QImageIOHandler поддерживает параметр option; в противном случае возвращает false. Например, если QImageIOHandler поддерживает параметр Size, supportsOption(Size) должно вернуть true.

См. также setOption() и option().

[virtual] bool QImageIOHandler::write(const QImage &image)

Записывает изображение image в назначенное устройство. Возвращает true при успехе; в противном случае возвращает false.

Реализация по умолчанию ничего не делает и просто возвращает false.

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

Spec-Zone.ru

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