Spec-Zone.ru › Qt 6.1

Класс QImageWriter

Класс QImageWriter предоставляет независимый от формата интерфейс для записи изображений в файлы или другие устройства. Подробнее...

Заголовок: #include <QImageWriter>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая наследуемые

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

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

Перечисление ImageWriterError { ОшибкаУстройства, ОшибкаНеподдерживаемогоФормата, ОшибкаНекорректногоИзображения, НеизвестнаяОшибка }

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

QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
QImageWriter(QIODevice *device, const QByteArray &format)
QImageWriter()
~QImageWriter()
bool canWrite() const
int compression() const
QIODevice * device() const
QImageWriter::ImageWriterError error() const
QString ошибкаСтрока() const
QString имяФайла() const
QByteArray формат() const
bool оптимизированнаяЗапись() const
bool постепеннаяСканированиеЗапись() const
int качество() const
void установитьСжатие(int compression)
void установитьУстройство(QIODevice *device)
void установитьИмяФайла(const QString &fileName)
void установитьФормат(const QByteArray &format)
void установитьОптимизированнуюЗапись(bool optimize)
void установитьПостепеннуюСканированиеЗапись(bool progressive)
void установитьКачество(int quality)
void установитьПодтип(const QByteArray &type)
void установитьТекст(const QString &key, const QString &text)
void установитьПреобразование(QImageIOHandler::Transformations transform)
QByteArray подтип() const
QList<QByteArray> поддерживаемыеПодтипы() const
bool поддерживаетОпцию(QImageIOHandler::ImageOption option) const
QImageIOHandler::Transformations преобразование() const
bool записать(const QImage &image)

Статические общедоступные члены

QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType)
QList<QByteArray> поддерживаемыеФорматыИзображений()
QList<QByteArray> поддерживаемыеТипыMIME()

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

QImageWriter поддерживает установку параметров, специфичных для формата, таких как уровень сжатия и качество, перед сохранением изображения. Если вам не нужны такие параметры, вы можете использовать QImage::save() или QPixmap::save() вместо этого.

Для сохранения изображения необходимо начать с создания объекта QImageWriter. Передайте либо имя файла, либо указатель на устройство, а также формат изображения в конструктор QImageWriter. Затем вы можете установить несколько параметров, таких как качество (вызвав setQuality()). canWrite() возвращает true если QImageWriter может записать изображение (то есть формат изображения поддерживается и устройство открыто для записи). Вызовите write() для записи изображения в устройство.

Если при записи изображения произошла ошибка, write() вернёт false. Затем вы можете вызвать error() для определения типа произошедшей ошибки или errorString() для получения удобочитаемого описания произошедшей ошибки.

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

Примечание: QImageWriter предполагает эксклюзивный контроль над файлом или устройством, которое ему назначено. Любые попытки изменить назначенный файл или устройство во время существования объекта QImageWriter приведут к неопределённым результатам. Если требуется немедленный доступ к ресурсу, рекомендуется использовать область видимости.

Например:

QString imagePath(QStringLiteral("path/image.jpeg"));
QImage image(64, 64, QImage::Format_RGB32);
image.fill(Qt::red);
{
    QImageWriter writer(imagePath);
    writer.write(image);
}

QFile::rename(imagePath,
              QStringLiteral("path/other_image.jpeg"));

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

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

перечисление QImageWriter::ImageWriterError

Это перечисление описывает ошибки, которые могут возникнуть при записи изображений с помощью QImageWriter.

Константа Значение Описание
QImageWriter::DeviceError 1 QImageWriter столкнулся с ошибкой устройства при записи данных изображения. Обратитесь к документации вашего устройства для получения более подробной информации о произошедшей ошибке.
QImageWriter::UnsupportedFormatError 2 Qt не поддерживает запрашиваемый формат изображения.
QImageWriter::InvalidImageError 3 Была предпринята попытка записи недопустимого QImage. Примером недопустимого изображения является null QImage.
QImageWriter::UnknownError 0 Произошла неизвестная ошибка. Если вы получили это значение после вызова write(), это, скорее всего, вызвано ошибкой в QImageWriter.

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

QImageWriter::QImageWriter(const QString &имяФайла, const QByteArray &формат = QByteArray())

Создаёт объект QImageWriter, который будет записывать в файл с именем имяФайла, используя формат изображения формат. Если формат не указан, QImageWriter определит формат изображения, проанализировав расширение имяФайла.

QImageWriter::QImageWriter(QIODevice *устройство, const QByteArray &формат)

Создаёт объект QImageWriter, используя устройство устройство и формат изображения формат.

QImageWriter::QImageWriter()

Создаёт пустой объект QImageWriter. Перед записью необходимо вызвать setFormat() для установки формата изображения, а затем setDevice() или setFileName().

QImageWriter::~QImageWriter()

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

bool QImageWriter::canWrite() const

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

См. также write(), setDevice() и setFormat().

int QImageWriter::compression() const

Возвращает степень сжатия изображения.

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

QIODevice *QImageWriter::device() const

Возвращает устройство, в настоящее время назначенное QImageWriter, или nullptr, если устройство не было назначено.

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

QImageWriter::ImageWriterError QImageWriter::error() const

Возвращает тип ошибки, которая произошла в последний раз.

См. также ImageWriterError и errorString().

QString QImageWriter::errorString() const

Возвращает удобочитаемое описание последней произошедшей ошибки.

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

QString QImageWriter::fileName() const

Если текущее назначенное устройство является QFile, или если был вызван setFileName(), эта функция возвращает имя файла, в который QImageWriter записывает. В противном случае (т. е. если устройство не было назначено или устройство не является QFile), возвращается пустая QString.

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

QByteArray QImageWriter::format() const

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

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

[static, since 5.12] QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)

Возвращает список форматов изображений, соответствующих mimeType.

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

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

См. также supportedImageFormats() и supportedMimeTypes().

[since 5.5] bool QImageWriter::optimizedWrite() const

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

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

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

[since 5.5] bool QImageWriter::progressiveScanWrite() const

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

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

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

int QImageWriter::quality() const

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

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

void QImageWriter::setCompression(int compression)

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

Диапазон значений compression зависит от формата изображения. Например, формат "tiff" поддерживает два значения: 0 (без сжатия) и 1 (LZW-сжатие).

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

void QImageWriter::setDevice(QIODevice *device)

Устанавливает устройство QImageWriter в device. Если устройство уже установлено, старое устройство удаляется из QImageWriter и в противном случае остается неизменным.

Если устройство еще не открыто, QImageWriter попытается открыть устройство в режиме QIODevice::WriteOnly, вызвав open(). Обратите внимание, что это не работает для некоторых устройств, таких как QProcess, QTcpSocket и QUdpSocket, где требуется дополнительная логика для открытия устройства.

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

void QImageWriter::setFileName(const QString &fileName)

Устанавливает имя файла QImageWriter на fileName. Внутренне QImageWriter создаст QFile и откроет его в режиме QIODevice::WriteOnly, используя этот файл при записи изображений.

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

void QImageWriter::setFormat(const QByteArray &format)

Устанавливает формат QImageWriter, который будет использоваться при записи изображений, на format. format — это строка текста, регистр которой не учитывается. Пример:

QImageWriter writer;
writer.setFormat("png"); // same as writer.setFormat("PNG");

Вы можете вызвать supportedImageFormats(), чтобы получить полный список форматов, которые поддерживает QImageWriter.

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

[since 5.5] void QImageWriter::setOptimizedWrite(bool optimize)

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

По умолчанию false.

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

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

[since 5.5] void QImageWriter::setProgressiveScanWrite(bool progressive)

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

По умолчанию false.

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

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

void QImageWriter::setQuality(int quality)

Устанавливает настройку качества формата изображения на quality.

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

Диапазон значений quality зависит от формата изображения. Например, формат "jpeg" поддерживает диапазон качества от 0 (низкое визуальное качество, высокое сжатие) до 100 (высокое визуальное качество, низкое сжатие).

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

[since 5.4] void QImageWriter::setSubType(const QByteArray &type)

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

Например, сохранение изображения в формате DDS с подтипом A8R8G8R8:

QImageWriter writer("some/image.dds");
if (writer.supportsOption(QImageIOHandler::SubType))
    writer.setSubType("A8R8G8B8");
writer.write(image);

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

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

void QImageWriter::setText(const QString &key, const QString &text)

Устанавливает текстовую информацию изображения, связанную с ключом key, на text. Это полезно для хранения информации об авторских правах или другой информации об изображении. Пример:

QImage image("some/image.jpeg");
QImageWriter writer("images/outimage.png", "png");
writer.setText("Author", "John Smith");
writer.write(image);

Если вы хотите сохранить один блок данных (например, комментарий), вы можете передать пустой ключ или использовать универсальный ключ, такой как "Описание".

Ключ и текст будут встроены в данные изображения после вызова write().

Поддержка этого параметра реализована через QImageIOHandler::Description.

См. также QImage::setText() и QImageReader::text().

[since 5.5] void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)

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

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

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

См. также transformation() и write().

[since 5.4] QByteArray QImageWriter::subType() const

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

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

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

[static] Список<QByteArray> QImageWriter::поддерживаемыеФорматыИзображений()

Возвращает список форматов изображений, поддерживаемых QImageWriter.

По умолчанию Qt может записывать следующие форматы:

Формат MIME-тип Описание
BMP image/bmp Растровый формат Windows
JPG image/jpeg Формат JPEG
PNG image/png Формат PNG
PBM image/x-portable-bitmap Портативный растровый формат
PGM image/x-portable-graymap Портативный полутоновый формат
PPM image/x-portable-pixmap Портативный растровый формат
XBM image/x-xbitmap Растровый формат X11
XPM image/x-xpixmap Пиксельный формат X11

Чтение и запись SVG-файлов поддерживается модулем Qt SVG. Модуль Qt Image Formats предоставляет поддержку дополнительных форматов изображений.

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

См. также setFormat(), QImageReader::поддерживаемыеФорматыИзображений() и QImageIOPlugin.

[static] Список<QByteArray> QImageWriter::поддерживаемыеMIMEТипы()

Возвращает список MIME-типов, поддерживаемых QImageWriter.

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

См. также поддерживаемыеФорматыИзображений() и QImageReader::поддерживаемыеMIMEТипы().

[since 5.4] Список<QByteArray> QImageWriter::поддерживаемыеПодтипы() const

Возвращает список подтипов, поддерживаемых изображением.

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

bool QImageWriter::поддерживаетПараметр(QImageIOHandler::ПараметрИзображения параметр) const

Возвращает true если писатель поддерживает параметр; в противном случае возвращает false.

Разные форматы изображений поддерживают разные параметры. Используйте эту функцию, чтобы определить, поддерживается ли определённый параметр текущим форматом. Например, формат PNG позволяет встраивать текст в метаданные изображения (см. text()).

QImageWriter writer(fileName);
if (writer.supportsOption(QImageIOHandler::Description))
    writer.setText("Author", "John Smith");

Параметры могут быть проверены после того, как писатель был связан с форматом.

См. также QImageReader::поддерживаетПараметр() и setFormat().

[since 5.5] QImageIOHandler::Преобразования QImageWriter::преобразование() const

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

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

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

bool QImageWriter::записать(const QImage &изображение)

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

См. также canWrite(), ошибка(), и ошибкаСтрока().

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

Spec-Zone.ru

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