QImageWriter Class
QImageWriter クラスは、画像をファイルや他のデバイスに書き込むための、フォーマットに依存しないインターフェイスを提供します。詳細...
ヘッダー | #include <QImageWriter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバ一覧
- QImageWriter はPainting Classes の一部です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
enum | ImageWriterError { DeviceError, UnsupportedFormatError, InvalidImageError, UnknownError } |
パブリック関数
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 |
QImageWriter::ImageWriterError | error() const |
QString | errorString() const |
QString | fileName() const |
QByteArray | format() const |
bool | optimizedWrite() const |
bool | progressiveScanWrite() const |
int | quality() const |
void | setCompression(int compression) |
void | setDevice(QIODevice *device) |
void | setFileName(const QString &fileName) |
void | setFormat(const QByteArray &format) |
void | setOptimizedWrite(bool optimize) |
void | setProgressiveScanWrite(bool progressive) |
void | setQuality(int quality) |
void | setSubType(const QByteArray &type) |
void | setText(const QString &key, const QString &text) |
void | setTransformation(QImageIOHandler::Transformations transform) |
QByteArray | subType() const |
QList<QByteArray> | supportedSubTypes() const |
bool | supportsOption(QImageIOHandler::ImageOption option) const |
QImageIOHandler::Transformations | transformation() const |
bool | write(const QImage &image) |
静的パブリックメンバ
QList<QByteArray> | imageFormatsForMimeType(const QByteArray &mimeType) |
QList<QByteArray> | supportedImageFormats() |
QList<QByteArray> | supportedMimeTypes() |
詳細説明
QImageWriter は、画像を保存する前に圧縮レベルや画質などのフォーマット固有のオプションを設定することができます。そのようなオプションが不要な場合は、代わりにQImage::save() やQPixmap::save() を使うことができます。
画像を保存するには、まず QImageWriter オブジェクトを作成します。QImageWriterのコンストラクタにファイル名かデバイスポインタ、画像フォーマットを渡します。その後、(setQuality ()を呼び出すことで)品質など、いくつかのオプションを設定することができます。canWrite(QImageWriterが画像を書き込める(つまり、画像フォーマットがサポートされており、デバイスが書き込み可能な状態である)場合、() はtrue
を返します。write() を呼び出して、画像をデバイスに書き込みます。
画像の書き込み時にエラーが発生した場合、write() は false を返します。その後、error() をコールして発生したエラーの種類を調べたり、errorString() をコールして、何が問題であったかを人間が読める形で説明したりすることができる。
QImageWriter が書き込めるフォーマットの一覧は、supportedImageFormats() を呼び出します。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も参照して ください。
メンバ型ドキュメント
enum QImageWriter::ImageWriterError
この列挙型は、QImageWriter で画像を書き込む際に発生する可能性のあるエラーを記述します。
定数 | 値 | 説明 |
---|---|---|
QImageWriter::DeviceError | 1 | QImageWriter 画像データの書き込み時にデバイスエラーが発生しました。エラーの詳細については、お使いのデバイスを参照してください。 |
QImageWriter::UnsupportedFormatError | 2 | Qt は要求された Image Formats をサポートしていません。 |
QImageWriter::InvalidImageError | 3 | 無効なQImage を書き込もうとしました。無効な画像の例としては、NULLQImage があります。 |
QImageWriter::UnknownError | 0 | 不明なエラーが発生しました。write() を呼び出した後にこの値が表示された場合は、QImageWriter のバグが原因である可能性が高いです。 |
メンバ関数ドキュメント
QImageWriter::QImageWriter()
空の QImageWriter オブジェクトを構築します。書き込む前に、setFormat() をコールして画像フォーマットを設定し、setDevice() またはsetFileName() をコールする必要があります。
[explicit]
QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)
デバイスdevice と画像フォーマットformat を用いて QImageWriter オブジェクトを構築する。
[explicit]
QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
画像フォーマットformat を使って、fileName という名前のファイルに書き込む QImageWriter オブジェクトを構築します。format が提供されていない場合、QImageWriter はfileName の拡張子を調べることで画像フォーマットを検出します。
[noexcept]
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
現在割り当てられているデバイスがファイルである場合、またはsetFileName() が呼び出された場合、この関数はQImageWriter が書き込むファイル名を返す。そうでない場合(つまり、デバイスが割り当てられていないか、デバイスがファイルでない場合)、空のQString が返される。
setFileName() およびsetDevice()も参照 。
QByteArray QImageWriter::format() const
QImageWriter が画像の書き込みに使用するフォーマットを返す。
setFormat()も参照 。
[static]
QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)
mimeType に対応する画像フォーマットのリストを返す。
この関数を呼び出す前に、QGuiApplication インスタンスを作成しておく必要があることに注意。
supportedImageFormats() およびsupportedMimeTypes()も参照 。
bool QImageWriter::optimizedWrite() const
画像を書き込む際に最適化がオンになっているかどうかを返します。
setOptimizedWrite()も参照 ください。
bool QImageWriter::progressiveScanWrite() const
画像をプログレッシブ画像として書き出すかどうかを返します。
setProgressiveScanWrite()も参照 。
int QImageWriter::quality() const
画像フォーマットの画質設定を返す。
setQuality()も参照 。
void QImageWriter::setCompression(int compression)
画像の圧縮率を設定する画像フォーマット固有の関数です。圧縮の設定をサポートしていない画像フォーマットでは、この値は無視されます。
compression の値の範囲は画像フォーマットによって異なります。たとえば、"tiff" フォーマットは 0(圧縮なし) と 1(LZW圧縮) の2つの値をサポートしています。
compression()も参照 。
void QImageWriter::setDevice(QIODevice *device)
QImageWriter deviceすでにデバイスが設定されている場合、古いデバイスはQImageWriter から削除され、それ以外は変更されない。
デバイスがまだオープンされていない場合、QImageWriter は open()を呼び出して、QIODeviceBase::WriteOnly モードでデバイスをオープンしようとする。これは、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::setOptimizedWrite(bool optimize)
これは画像フォーマット固有の関数で、画像を書き込む際にoptimize フラグを設定します。optimize フラグの設定をサポートしていない画像フォーマットでは、この値は無視されます。
デフォルトは false です。
optimizedWrite()も参照 。
void QImageWriter::setProgressiveScanWrite(bool progressive)
これは画像フォーマット固有の関数で、画像書き込み時にprogressive スキャンをオンにする。progressive スキャンフラグの設定をサポートしていない画像フォーマットでは、 この値は無視されます。
デフォルトは false です。
progressiveScanWrite()も参照 。
void QImageWriter::setQuality(int quality)
画像フォーマットの品質設定をquality に設定します。
画像フォーマットによっては、特に非可逆なものでは、 a) 結果画像の視覚的品質と、 b) エンコード実行時間と圧縮レベルとの間のトレードオフを伴います。この関数は、それをサポートする画像フォーマットに対して、そのトレードオフのレベルを設定します。その他のフォーマットでは、この値は無視されます。
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);
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 で実装されています。
QImage::setText() およびQImageReader::text()も参照 。
void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)
画像の向きを含む変換メタデータをtransform に設定します。
変換メタデータが画像フォーマットでサポートされていない場合は、書き込む前に変換が適用されます。
transformation() およびwrite()も参照 。
QByteArray QImageWriter::subType() const
画像のサブタイプを返します。
setSubType()も参照ください 。
[static]
QList<QByteArray> QImageWriter::supportedImageFormats()
QImageWriter がサポートしている画像フォーマットのリストを返します。
デフォルトでは、Qt は以下のフォーマットを書き込むことができます:
フォーマット | MIME タイプ | 説明 |
---|---|---|
BMP | image/bmp | Windows ビットマップ |
JPG | イメージ/JPEG | ジョイント・フォトグラフィック・エキスパート・グループ |
PNG | 画像/png | ポータブルネットワークグラフィックス |
PBM | image/x-portable-bitmap | ポータブルビットマップ |
PGM | ポータブルグレイマップ | ポータブルグレイマップ |
PPM | ポータブルピクスマップ | ポータブルピクスマップ |
XBM | イメージ/x-xbitmap | X11ビットマップ |
XPM | イメージ/x-xpixmap | X11 ピクスマップ |
SVGファイルの読み書きは Qt SVGモジュールでサポートされています。この Qt Image Formatsモジュールは追加の画像フォーマットのサポートを提供する。
この関数が呼ばれる前にQApplication インスタンスが生成されていなければならないことに注意。
setFormat(),QImageReader::supportedImageFormats(),QImageIOPluginも参照 。
[static]
QList<QByteArray> QImageWriter::supportedMimeTypes()
QImageWriter がサポートする MIME タイプのリストを返す。
この関数を呼び出す前にQApplication インスタンスを作成しておく必要があることに注意。
supportedImageFormats() およびQImageReader::supportedMimeTypes()も参照 。
QList<QByteArray> QImageWriter::supportedSubTypes() const
画像がサポートしているサブタイプのリストを返します。
bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
ライタがoption をサポートしていればtrue
を返し、そうでなければ false を返す。
画像フォーマットが異なれば、サポートするオプションも異なります。あるオプションが現在のフォーマットでサポートされているかどうかを調べるには、この関数を呼び出します。た と えば、 PNG 形式では画像の メ タ デー タ にテ キ ス ト を埋め込む こ と がで き ます (text() 参照)。
QImageWriter writer(fileName); if (writer.supportsOption(QImageIOHandler::Description)) writer.setText("Author", "John Smith");
オプションのテストは、ライタがフォーマットと関連付けられた後で行うことができます。
QImageReader::supportsOption() およびsetFormat()も参照 ください。
QImageIOHandler::Transformations QImageWriter::transformation() const
画像が書き込まれるように設定されている変換と向きを返します。
setTransformation()も参照 ください。
bool QImageWriter::write(const QImage &image)
指定されたデバイスまたはファイル名に画像image を書き込む。成功した場合はtrue
を返し、失敗した場合はfalse
を返す。操作に失敗した場合は、error() を呼び出して発生したエラーの種類を調べたり、errorString() を呼び出してエラーの説明を読み取ったりすることができる。
canWrite()、error()、errorString()も参照 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.