このページでは

QImageWriter Class

QImageWriter クラスは、画像をファイルやその他のデバイスに書き込むための、フォーマットに依存しないインターフェースを提供します。詳細...

ヘッダー: #include <QImageWriter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

注:このクラスのすべての関数は再入可能である。

パブリック型

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::DeviceError1QImageWriter 画像データの書き込み中にデバイスエラーが発生しました。何が問題だったかについての詳細は、お使いのデバイスを参照してください。
QImageWriter::UnsupportedFormatError2Qtは、要求された画像フォーマットをサポートしていません。
QImageWriter::InvalidImageError3無効なQImage の書き込みが試みられました。無効な画像の例としては、nullのQImage などが挙げられます。
QImageWriter::UnknownError0不明なエラーが発生しました。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())

fileName という名前のファイルに、format という画像形式で書き込むQImageWriterオブジェクトを作成します。format が指定されていない場合、QImageWriterはfileName の拡張子を調べることで画像形式を検出します。

[noexcept] QImageWriter::~QImageWriter()

QImageWriter オブジェクトを破棄します。

bool QImageWriter::canWrite() const

QImageWriter が画像への書き込みが可能である場合(つまり、その画像形式がサポートされており、割り当てられたデバイスが読み取り用に開かれている場合)、true を返します。

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 の値の範囲は、画像形式によって異なります:

画像形式サポートされる値
PNG0(非圧縮)から100(画質が低く、最大圧縮)までの範囲の値。この値は、setQuality の「品質」設定とは逆の関係にあります。これら2つのオプションは互いに排他的です。
TGA0 - 非圧縮
1 - RLE圧縮
TIFF0 - 圧縮なし
1 - RLE 圧縮
2 - RLE 圧縮
3 - CCITT Group 3 FAX エンコーディング
4 - CCITT Group 4 FAX エンコーディング
5 - JPEG 圧縮

compression() およびsetQuality()も参照してください 。

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");

`supportedImageFormats()` を呼び出すと、`QImageWriter ` がサポートするフォーマットの完全な一覧を確認できます。

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 に設定する、画像形式固有の関数です。サブタイプは、ハンドラが画像を保存する際にどの形式を使用すべきかを判断するために使用できます。

たとえば、サブタイプ「A8R8G8R8」のDDS形式で画像を保存する場合:

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タイプ説明
BMPimage/bmpWindows ビットマップ
JPGimage/jpegJoint Photographic Experts Group
PNGimage/pngポータブル・ネットワーク・グラフィックス
PBMimage/x-portable-bitmapポータブル・ビットマップ
PGMimage/x-portable-graymapポータブル・グレイマップ
PPMimage/x-portable-pixmapポータブル・ピクマップ
XBMimage/x-xbitmapX11ビットマップ
XPMimage/x-xpixmapX11 ピクマップ

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()も参照してください 。

© 2026 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.