QImageIOHandler Class

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

Header: #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 を返 し ます。
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

現在の画像の矩形を返します。画像に対 し て矩形が定義 さ れていない と き は、 空の 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 を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。