Класс QImageWriter
Класс QImageWriter предоставляет независимый от формата интерфейс для записи изображений в файлы или другие устройства. Подробнее...
| Заголовок: | #include <QImageWriter> |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются перевходящими.
Типы публичного доступа
| Перечисление | ImageWriterError { ОшибкаУстройства, ОшибкаНеподдерживаемогоФормата, НеизвестнаяОшибка } |
Функции публичного доступа
| QImageWriter() | |
| QImageWriter(QIODevice *device, const QByteArray &format) | |
| QImageWriter(const QString &fileName, const QByteArray &format = QByteArray()) | |
| ~QImageWriter() | |
| bool | canWrite() const |
| int | compression() const |
| QIODevice * | device() const |
| ImageWriterError | error() const |
| QString | errorString() const |
| QString | fileName() const |
| QByteArray | format() const |
| float | gamma() const |
| bool | optimizedWrite() const |
| bool | progressiveScanWrite() const |
| int | quality() const |
| void | setCompression(int compression) |
| void | setDevice(QIODevice *device) |
Статические члены публичного доступа
| QList<QByteArray> | supportedImageFormats() |
| QList<QByteArray> | supportedMimeTypes() |
Подробное описание
Класс QImageWriter предоставляет независимый от формата интерфейс для записи изображений в файлы или другие устройства.
QImageWriter поддерживает установку параметров, специфичных для формата, таких как уровень гаммы, уровень сжатия и качество, перед сохранением изображения. Если вам не нужны такие параметры, вы можете использовать QImage::save() или QPixmap::save() вместо этого.
Для сохранения изображения начните с создания объекта QImageWriter. Передайте имя файла или указатель на устройство и формат изображения в конструктор QImageWriter. Затем вы можете задать несколько параметров, такие как уровень гаммы (вызвав setGamma()) и качество (вызвав setQuality()). canWrite() возвращает true если QImageWriter может записать изображение (т.е. формат изображения поддерживается и устройство открыто для записи). Вызовите write() для записи изображения в устройство.
Если при записи изображения возникнет какая-либо ошибка, write() вернёт false. Затем вы можете вызвать error() для определения типа ошибки, или errorString() для получения удобочитаемого описания произошедшей ошибки.
Вызовите supportedImageFormats() для получения списка форматов, которые может писать QImageWriter. QImageWriter поддерживает все встроенные форматы изображений, а также любые плагины форматов изображений, которые поддерживают запись.
См. также QImageReader, QImageIOHandler и QImageIOPlugin.
Документация по типу членов
Перечисление QImageWriter::ImageWriterError
Это перечисление описывает ошибки, которые могут возникнуть при записи изображений с помощью QImageWriter.
| Постоянная | Значение | Описание |
|---|---|---|
QImageWriter::DeviceError |
1 |
QImageWriter столкнулся с ошибкой устройства при записи данных изображения. Обратитесь к вашему устройству для получения более подробной информации о том, что пошло не так. |
QImageWriter::UnsupportedFormatError |
2 |
Qt не поддерживает указанный формат изображения. |
QImageWriter::UnknownError |
0 |
Произошла неизвестная ошибка. Если вы получили это значение после вызова write(), скорее всего, это вызвано ошибкой в QImageWriter. |
Документация по функциям-членам
QImageWriter::QImageWriter()
Создаёт пустой объект QImageWriter. Перед записью вы должны вызвать setFormat() для установки формата изображения, а затем setDevice() или setFileName().
QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)
Создаёт объект QImageWriter с использованием устройства device и формата изображения format.
QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
Создаёт объект QImageWriter, который будет записывать в файл с именем fileName, используя формат изображения format. Если format не указан, QImageWriter определит формат изображения, анализируя расширение fileName.
QImageWriter::~QImageWriter()
Деструктор объекта QImageWriter.
bool QImageWriter::canWrite() const
Возвращает true , если QImageWriter может записать изображение; т.е. формат изображения поддерживается, и назначенное устройство открыто для чтения.
См. также write(), setDevice() и setFormat().
int QImageWriter::compression() const
Возвращает степень сжатия изображения.
См. также setCompression().
QIODevice *QImageWriter::device() const
Возвращает устройство, текуще назначенное QImageWriter, или 0, если устройство не назначено.
См. также setDevice().
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().
float QImageWriter::gamma() const
Возвращает уровень гаммы изображения.
См. также setGamma().
bool QImageWriter::optimizedWrite() const
Возвращает значение, указывающее, включена ли оптимизация для записи изображения.
Функция была добавлена в Qt 5.5.
См. также setOptimizedWrite().
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"); Для получения полного списка поддерживаемых форматов QImageWriter можно вызвать supportedImageFormats().
См. также format().
void QImageWriter::setGamma(float gamma)
Функция, специфичная для формата изображения, устанавливающая уровень гаммы изображения на gamma. Для форматов изображений, не поддерживающих настройку уровня гаммы, это значение игнорируется.
Диапазон значений gamma зависит от формата изображения. Например, формат "png" поддерживает диапазон гаммы от 0,0 до 1,0.
См. также gamma() и quality().
void QImageWriter::setOptimizedWrite(bool optimize)
Функция, специфичная для формата изображения, устанавливающая флаг optimize при записи изображений. Для форматов изображений, не поддерживающих настройку флага optimize, это значение игнорируется.
По умолчанию false.
Функция была добавлена в Qt 5.5.
См. также optimizedWrite().
void QImageWriter::setProgressiveScanWrite(bool progressive)
Функция, специфичная для формата изображения, которая включает прогрессивную развертку при записи изображения. Для форматов изображений, не поддерживающих настройку флага progressive сканирования, это значение игнорируется.
По умолчанию false.
Функция была добавлена в Qt 5.5.
См. также progressiveScanWrite().
void QImageWriter::setQuality(int quality)
Устанавливает значение качества формата изображения на quality.
Некоторые форматы изображений, особенно сжатые, имеют компромисс между качеством конечного изображения и временем кодирования и уровнем сжатия. Эта функция устанавливает уровень этого компромисса для форматов изображений, которые его поддерживают. Для других форматов это значение игнорируется.
Диапазон значений quality зависит от формата изображения. Например, формат "jpeg" поддерживает диапазон качества от 0 (низкое качество, высокое сжатие) до 100 (высокое качество, низкое сжатие).
См. также quality().
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); Если требуется сохранить один блок данных (например, комментарий), можно передать пустой ключ или использовать универсальный ключ, такой как "Description".
Ключ и текст будут встроены в данные изображения после вызова write().
Поддержка этого варианта реализована через QImageIOHandler::Description.
Функция была добавлена в Qt 4.1.
См. также QImage::setText() и QImageReader::text().
void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)
Устанавливает метаданные преобразований изображения, включая ориентацию, на transform.
Если метаданные преобразования не поддерживаются форматом изображения, преобразование применяется до записи.
Эта функция была добавлена в Qt 5.5.
См. также transformation() и write().
QByteArray QImageWriter::subType() const
Возвращает подтип изображения.
Эта функция была добавлена в Qt 5.4.
См. также setSubType().
[static] QList<QByteArray> QImageWriter::supportedImageFormats()
Возвращает список форматов изображений, поддерживаемых QImageWriter.
По умолчанию Qt может записывать следующие форматы:
| Формат | MIME тип | Описание |
|---|---|---|
| BMP | image/bmp | Windows Bitmap |
| JPG | image/jpeg | Joint Photographic Experts Group |
| PNG | image/png | Portable Network Graphics |
| PBM | image/x-portable-bitmap | Portable Bitmap |
| PGM | image/x-portable-graymap | Portable Graymap |
| PPM | image/x-portable-pixmap | Portable Pixmap |
| XBM | image/x-xbitmap | X11 Bitmap |
| XPM | image/x-xpixmap | X11 Pixmap |
Чтение и запись SVG-файлов поддерживается модулем Qt SVG. Модуль Qt Image Formats предоставляет поддержку дополнительных форматов изображений.
Обратите внимание, что экземпляр QApplication должен быть создан до вызова этой функции.
См. также setFormat(), QImageReader::supportedImageFormats() и QImageIOPlugin.
[static] QList<QByteArray> QImageWriter::supportedMimeTypes()
Возвращает список MIME-типов, поддерживаемых QImageWriter.
Обратите внимание, что экземпляр QApplication должен быть создан до вызова этой функции.
См. также supportedImageFormats() и QImageReader::supportedMimeTypes().
QList<QByteArray> QImageWriter::supportedSubTypes() const
Возвращает список подтипов, поддерживаемых изображением.
Эта функция была добавлена в Qt 5.4.
bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
Возвращает true если писатель поддерживает option; в противном случае возвращает false.
Разные форматы изображений поддерживают разные параметры. Вызовите эту функцию, чтобы определить, поддерживается ли определённый параметр текущим форматом. Например, формат PNG позволяет встраивать текст в метаданные изображения (см. text()).
QImageWriter writer(fileName);
if (writer.supportsOption(QImageIOHandler::Description))
writer.setText("Author", "John Smith"); Параметры могут быть проверены после того, как писатель был связан с форматом.
Эта функция была добавлена в Qt 4.2.
См. также QImageReader::supportsOption() и setFormat().
QImageIOHandler::Transformations QImageWriter::transformation() const
Возвращает преобразование и ориентацию, заданные для изображения, которое будет записано.
Эта функция была добавлена в Qt 5.5.
См. также setTransformation().
bool QImageWriter::write(const QImage &image)
Записывает изображение image в назначенное устройство или имя файла. Возвращает true при успехе; в противном случае возвращает false. Если операция завершилась неудачно, вы можете вызвать error(), чтобы определить тип произошедшей ошибки, или errorString(), чтобы получить удобочитаемое описание ошибки.
См. также canWrite(), error() и errorString().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qimagewriter.html