このページでは

QImageIOHandler Class

QImageIOHandler クラスは、Qt Image Formats のすべての画像フォーマットに共通する画像 I/O インターフェースを定義しています。詳細...

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

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

パブリック型

enum ImageOption { Size, ClipRect, ScaledSize, ScaledClipRect, Description, …, ImageTransformation }
enum Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, …, TransformationRotate270 }
flags Transformations

パブリック関数

QImageIOHandler()
virtual ~QImageIOHandler()
virtual bool canRead() const = 0
virtual int currentImageNumber() const
virtual QRect currentImageRect() const
QIODevice *device() const
QByteArray format() const
virtual int imageCount() const
virtual bool jumpToImage(int imageNumber)
virtual bool jumpToNextImage()
virtual int loopCount() const
virtual int nextImageDelay() const
virtual QVariant option(QImageIOHandler::ImageOption option) const
virtual bool read(QImage *image) = 0
void setDevice(QIODevice *device)
void setFormat(const QByteArray &format)
void setFormat(const QByteArray &format) const
virtual void setOption(QImageIOHandler::ImageOption option, const QVariant &value)
virtual bool supportsOption(QImageIOHandler::ImageOption option) const
virtual bool write(const QImage &image)

静的パブリックメンバー

(since 6.0) bool allocateImage(QSize size, QImage::Format format, QImage *image)

詳細な説明

Qt は、QImageReader およびQImageWriter を通じて画像を読み書きするために QImageIOHandler を使用します。また、このクラスを継承して、Qt のプラグインメカニズムを使用して独自の画像フォーマットハンドラを作成することもできます。

setDevice() を呼び出してハンドラにデバイスを割り当て、setFormat() を呼び出してフォーマットを割り当てます。1 つの QImageIOHandler が複数の画像フォーマットをサポートすることも可能です。canRead() は、デバイスから画像を読み込める場合にtrue を返し、read() およびwrite() は、画像の読み込みまたは書き込みが正常に完了した場合に true を返します。

QImageIOHandler は、loopCount()、imageCount()、nextImageDelay()、およびcurrentImageNumber() といった関数を通じて、アニメーション形式もサポートしています。

画像ハンドラがどのオプションをサポートしているかを判断するために、QtはsupportsOption()およびsetOption()を呼び出します。ImageOption 列挙型のいずれかのオプションをサポートできる場合は、必ずこれらの関数を再実装してください。

独自の画像ハンドラを作成するには、少なくともcanRead() およびread() を再実装する必要があります。次に、そのハンドラを作成できるQImageIOPlugin を作成します。最後に、プラグインをインストールすると、QImageReader およびQImageWriter が自動的にそのプラグインを読み込み、使用を開始します。

QImageIOPlugin 、QImageReader 、およびQImageWriterも参照してください 。

Member Type のドキュメント

enum QImageIOHandler::ImageOption

この列挙型は、QImageIOHandler でサポートされているさまざまなオプションを表しています。オプションの中には、画像のプロパティを取得するために使用されるものもあれば、画像の書き込み方法を切り替えるために使用されるものもあります。

定数値説明
QImageIOHandler::Size0画像の元のサイズ。このオプションをサポートするハンドラは、画像のメタデータから画像のサイズを読み取り、option() からこのサイズを `QSize` として返すものと期待されます。
QImageIOHandler::ClipRect1クリップ矩形、またはROI(関心領域)。このオプションをサポートするハンドラは、他の変換が適用される前に、read() 内で元の画像から指定されたQRect 領域のみを読み取るものと期待されます。
QImageIOHandler::ScaledSize4画像の拡大縮小後のサイズ。このオプションをサポートするハンドラは、クリップ矩形(ClipRect)による変換を適用した後、画像を指定されたサイズ(QSize )に拡大縮小することが期待されます。ハンドラがこのオプションをサポートしていない場合、QImageReader は画像の読み取り後に拡大縮小を行います。
QImageIOHandler::ScaledClipRect3画像のスケーリング後のクリップ矩形(またはROI:Region Of Interest)。 このオプションをサポートするハンドラは、スケーリング(ScaleSize)や通常のクリッピング(ClipRect)を適用した後、指定されたクリップ矩形(QRect )を適用することが期待されます。ハンドラがこのオプションをサポートしていない場合、QImageReader は画像の読み込み後にスケーリングされたクリップ矩形を適用します。
QImageIOHandler::Description2画像の説明。GIFやPNGなどの一部の画像形式では、画像データにテキストやコメントを埋め込むことができます(例:著作権情報の保存など)。 テキストはキーと値のペアとして保存されるのが一般的ですが、一部の形式ではすべてのテキストが 1 つの連続したブロックとして保存されます。QImageIOHandler は、テキストを 1 つのQString として返します。この場合、キーと値は「:」で区切られ、キーと値のペアは 2 行の改行で区切られます (\n\n )。 例えば、「Title: Sunset\n\nAuthor : Jim Smith\nSarah Jones\n\n 」といった形になります。テキストを単一のブロックとして格納するフォーマットでは、「Description」をキーとして使用できます。
QImageIOHandler::CompressionRatio5画像データの圧縮率。このオプションをサポートするハンドラは、書き込み時にこのオプションの値(int型)に応じて圧縮率を設定することが期待されます。
QImageIOHandler::Gamma6画像のガンマ値。このオプションをサポートするハンドラは、書き込み時にこのオプションの値(float型)に応じて画像のガンマ値を設定することが期待されます。
QImageIOHandler::Quality7画像の品質レベル。このオプションをサポートするハンドラは、書き込み時にこのオプションの値(int型)に応じて画像の品質レベルを設定することが期待されます。
QImageIOHandler::Name8画像の名前。このオプションをサポートするハンドラは、画像のメタデータから名前を読み取り、これをQString として返すか、画像を書き込む際には、その名前を画像のメタデータに格納することが期待される。
QImageIOHandler::SubType9画像のサブタイプ。このオプションをサポートするハンドラは、画像の読み取りおよび書き込みの際に、このサブタイプ値を活用できます。たとえば、PPMハンドラのサブタイプ値は「ppm」または「ppmraw」となる場合があります。
QImageIOHandler::IncrementalReading10このオプションをサポートするハンドラは、あたかもアニメーションであるかのように、複数のパスに分けて画像を読み込むことが期待されます。QImageReader は、その画像をアニメーションとして扱います。
QImageIOHandler::Endianness11画像のエンディアン。特定の画像フォーマットは、BigEndian または LittleEndian として保存される場合があります。Endianness をサポートするハンドラは、このオプションの値を使用して、画像の保存方法を決定します。
QImageIOHandler::Animation12アニメーションをサポートする画像形式は、supportsOption() においてこの値に対して true を返します。それ以外の場合は false が返されます。
QImageIOHandler::BackgroundColor13一部の画像形式では、背景色を指定することができます。BackgroundColorをサポートするハンドラは、画像を読み込む際に、このオプション(QColor )の値で背景色を初期化します。
QImageIOHandler::ImageFormat14ハンドラによって返される画像のデータ形式。これは、QImage::Format に列挙されている形式のいずれかである。
QImageIOHandler::SupportedSubTypes15異なる保存バリアントをサポートする画像フォーマットは、このオプションでサポートされているバリアント名(QList<QByteArray>)のリストを返す必要があります。
QImageIOHandler::OptimizedWrite16このオプションをサポートするハンドラは、書き込み時に最適化フラグを有効にする必要があります。
QImageIOHandler::ProgressiveScanWrite17このオプションをサポートするハンドラは、画像をプログレッシブスキャン画像として書き込むことが期待されます。
QImageIOHandler::ImageTransformation18このオプションをサポートするハンドラは、画像の変換メタデータを読み取ることができます。このオプションをサポートするハンドラは、変換自体を適用してはなりません。

enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations

この列挙型は、一部の画像形式が(通常はEXIFを通じて)サポートするさまざまな変換や向きを表します。

定数値説明
QImageIOHandler::TransformationNone0変換は適用しない。
QImageIOHandler::TransformationMirror1画像を水平方向に反転します。
QImageIOHandler::TransformationFlip2画像を垂直方向に反転します。
QImageIOHandler::TransformationRotate180TransformationMirror | TransformationFlip画像を180度回転させます。これは、水平方向と垂直方向の両方で反転させるのと同じです。
QImageIOHandler::TransformationRotate904画像を90度回転させます。
QImageIOHandler::TransformationMirrorAndRotate90TransformationMirror | TransformationRotate90画像を水平方向に反転させ、その後90度回転させます。
QImageIOHandler::TransformationFlipAndRotate90TransformationFlip | TransformationRotate90画像を垂直方向に反転させ、その後90度回転させます。
QImageIOHandler::TransformationRotate270TransformationRotate180 | TransformationRotate90画像を270度回転させます。これは、画像を水平方向および垂直方向に反転させた後、90度回転させるのと同じです。

「Transformations」型は、QFlags<Transformation> の typedef です。これは、Transformation 値の論理和(OR)の組み合わせを格納します。

QImageReader::transformation()、QImageReader::setAutoTransform()、およびQImageWriter::setTransformation()も参照してください 。

メンバ関数のドキュメント

QImageIOHandler::QImageIOHandler()

QImageIOHandler オブジェクトを生成します。

[virtual noexcept] QImageIOHandler::~QImageIOHandler()

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

[static, since 6.0] bool QImageIOHandler::allocateImage(QSize size, QImage::Format format, QImage *image)

これは、サブクラスにおける読み込み関数用の便利なメソッドです。画像フォーマットハンドラは、必要なメモリ割り当てが現在の割り当て制限を超える場合、画像の読み込みを拒否しなければなりません。この関数はパラメータと制限を確認し、有効かつ必要であればメモリ割り当てを行います。正常に返された場合、image は、指定されたsize およびformat に対する、有効なデタッチされたQImage となります。

この関数は Qt 6.0 で導入されました。

QImageReader::allocationLimit()も参照してください 。

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

デバイスから画像を読み込める場合(つまり、画像形式がサポートされており、デバイスから読み込みが可能で、初期のヘッダー情報から画像が読み込めることが示唆されている場合)、true を返します。それ以外の場合は、false を返します。

canRead() を再実装する際は、I/O デバイス (device()) が元の状態のまま保たれるようにしてください(例:read() ではなく peek() を使用するなど)。

read() およびQIODevice::peek()も参照してください 。

[virtual] int QImageIOHandler::currentImageNumber() const

アニメーションをサポートする画像形式の場合、この関数はアニメーション内の現在の画像のシーケンス番号を返します。read() が呼び出される前にこの関数が呼び出された場合、-1 が返されます。シーケンスの最初の画像の番号は 0 です。

画像形式がアニメーションに対応していない場合は、0が返されます。

read()も参照してください 。

[virtual] QRect QImageIOHandler::currentImageRect() const

現在の画像の矩形を返します。画像に矩形が定義されていない場合は、空の QRect() が返されます。

この関数は、フレームの一部のみを一度に更新するアニメーションなどで役立ちます。

QIODevice *QImageIOHandler::device() const

QImageIOHandler に現在割り当てられているデバイスを返します。デバイスが割り当てられていない場合は、nullptr が返されます。

「setDevice()」も参照してください 。

QByteArray QImageIOHandler::format() const

QImageIOHandler に現在割り当てられているフォーマットを返します。フォーマットが割り当てられていない場合は、空の文字列が返されます。

setFormat()も参照してください 。

[virtual] int QImageIOHandler::imageCount() const

アニメーションに対応している画像形式の場合、この関数はアニメーションに含まれる画像の数を返します。画像形式がアニメーションに対応していない場合、または画像の数を特定できない場合は、0が返されます。

デフォルトの実装では、canRead()がtrue を返す場合、1を返し、それ以外の場合は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 のバリアントを返します。

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 に設定します。このフォーマットは、複数の画像フォーマットをサポートするハンドラで特に有用です。

この関数は、canRead() から呼び出せるように、const として宣言されています。

format()も参照してください 。

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

オプション `option ` の値を `value` に設定します。

option() およびImageOptionも参照してください 。

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

QImageIOHandler がoption オプションをサポートしている場合はtrue を返し、そうでない場合はfalse を返します。たとえば、QImageIOHandler がSize オプションをサポートしている場合、supportsOption(Size)はtrueを返さなければなりません。

setOption() およびoption()も参照してください 。

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

指定されたデバイスに画像 `image ` を書き込みます。成功した場合は `true ` を返し、失敗した場合は `false` を返します。

デフォルトの実装では何も行わず、単にfalse を返します。

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