QImageIOHandler Class

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

ヘッダー #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 は、QImageReaderQImageWriter を通して、画像の読み書きに QImageIOHandler を使用します。このクラスから派生して、Qt のプラグインメカニズムを使用した独自の画像フォーマットハンドラを書くこともできます。

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

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

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

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

QImageIOPluginQImageReaderQImageWriterも参照のこと

メンバー型ドキュメント

enum QImageIOHandler::ImageOption

この列挙型は、QImageIOHandler がサポートするさまざまなオプションを記述します。いくつかのオプションは、画像のプロパティを問い合わせるために使用され、他のオプションは、画像を書き込む方法を切り替えるために使用されます。

定数説明
QImageIOHandler::Size0画像のオリジナルサイズ。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 画像の メ タ デー タ か ら 画像のサ イ ズ を読み込んで、 こ のサ イ ズをoption() からQSize と し て返す こ と が期待 さ れます。
QImageIOHandler::ClipRect1ク リ ッ プ矩形、 ま たは ROI (Region Of Interest)。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、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 )で区切られます。例えば、"Title:例えば、"Title: SunsetnAuthor:例えば、"Title: SunsetAuthor: Jim SmithnSarah Jonesn "である。テキストを1つのブロックに格納するフォーマットは、"Description "をキーとして使用できる。
QImageIOHandler::CompressionRatio5画像データの圧縮率。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 書 き 込み時に こ のオプシ ョ ンの値 (int 型) に従っ て圧縮率を設定す る こ と にな り ます。
QImageIOHandler::Gamma6画像のガンマレベル。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 書 き 込み時に こ のオプシ ョ ンの値 (float) に従っ て画像のガ ン マ値を設定す る こ と にな り ます。
QImageIOHandler::Quality7画像の品質レベル。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、 書 き込み時に こ のオプシ ョ ンの値 (int) に従っ て画質レ ベルを設定する こ と が期待 さ れます。
QImageIOHandler::Name8画像の名前。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、 画像の メ タ デー タ か ら 名前を読み込んで こ れをQString と し て返すか、 ま たは画像を書き込む際にその名前を画像の メ タ デー タ に格納する こ と が期待 さ れます。
QImageIOHandler::SubType9画像のサブタイプ。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 画像を読み込んだ り 書 き 込んだ り す る 際にサブ タ イ プの値を利用す る こ と がで き ます。た と えば、 PPM ハン ド ラ は "ppm" か "ppmraw" のサブ タ イ プ値を持つ こ と がで き ます。
QImageIOHandler::IncrementalReading10QImageReader は画像をアニメーションとして扱います。
QImageIOHandler::Endianness11画像のエンディアン。画像フォーマットによっては BigEndian や LittleEndian として保存できるものもあります。エンディアンをサポートするハンドラは、このオプションの値を使用して、画像をどのように保存するかを決定します。
QImageIOHandler::Animation12ア ニ メ ーシ ョ ン をサポー ト し てい る 画像フ ォーマ ッ ト は、supportsOption() で こ の値に対 し て true を返し、 そ う でなければ false を返 し ます。
QImageIOHandler::BackgroundColor13そうでない場合は false が返されます。特定の画像フォーマットでは、背景色を指定することができます。BackgroundColorをサポートするハンドラは、画像を読み込むときに背景色をこのオプション(QColor )に初期化します。
QImageIOHandler::ImageFormat14ハン ド ラ が返す画像のデー タ 形式。こ れは、QImage::Format に挙げ ら れてい る ど ち ら かの形式にな る 可能性があ り ます。
QImageIOHandler::SupportedSubTypes15さ ま ざ ま な保存バ リ ア ン ト をサポー ト し てい る 画像フ ォーマ ッ ト は、 対応 し てい る バ リ ア ン ト 名の リ ス ト (QList<QByteArray>) を こ のオプシ ョ ンで返す必要があ り ます。
QImageIOHandler::OptimizedWrite16こ のオプ シ ョ ン をサポー ト す る ハン ド ラ は、 書 き 込み時に最適化フ ラ グ を オ ンにす る こ と が期待 さ れます。
QImageIOHandler::ProgressiveScanWrite17こ のオプ シ ョ ン をサポー ト す る ハン ド ラ は、 画像をプ ロ グ レ ビ シ ョ ン ス キ ャ ン画像 と し て書 き 出す こ と が期待 さ れます。
QImageIOHandler::ImageTransformation18こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 画像の変換 メ タ デー タ を読み込む こ と がで き ます。このオプションをサポートするハンドラは、変換自体を適用すべきではありません。

enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations

この enum は、画像フォーマット (通常は 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 は、与えられたsizeformat の有効な、切り離された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

現在の画像の矩形を返します。画像に対して rect が定義されていない場合は、空の 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 に設定する。 画像ハンドラは、画像の読み書きにこのデバイスを使用する。

デバイスの設定は 1 回のみで、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 を返す。例えば、QImageIOHandlerSize オプションをサポートしている場合、 supportsOption(Size) は true を返さなければならない。

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

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

指定されたデバイスに画像image を書き込む。成功すればtrue を返し、そうでなければfalse を返す。

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

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