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 は、QImageReader とQImageWriter を通して、画像の読み書きに QImageIOHandler を使用します。このクラスから派生して、Qt のプラグインメカニズムを使って独自の画像フォーマットハンドラを書くこともできます。
ハンドラにデバイスを割り当てるにはsetDevice() を、フォーマットを割り当てるにはsetFormat() を呼び出します。1つのQImageIOHandlerが複数の画像フォーマットをサポートすることもあります。canRead() は、デバイスから画像を読み取ることができればtrue
を返し、read() とwrite() は、画像の読み取りまたは書き込みが正常に完了すれば true を返します。
QImageIOHandler は、関数loopCount(),imageCount(),nextImageDelay(),currentImageNumber() を通して、アニメーション形式もサポートしています。
画像ハンドラがサポートするオプションを決定するために、Qt はsupportsOption() とsetOption() を呼び出します。ImageOption enum のオプションのいずれかをサポートできる場合は、これらの関数を再実装してください。
独自の画像ハンドラを書くには、少なくともcanRead() とread() を再実装する必要があります。次に、ハンドラを作成できるQImageIOPlugin を作成します。最後にプラグインをインストールすると、QImageReader とQImageWriter が自動的にプラグインを読み込み、使用を開始します。
QImageIOPlugin 、QImageReader 、QImageWriterも参照のこと 。
メンバ型ドキュメント
enum QImageIOHandler::ImageOption
この列挙型は、QImageIOHandler がサポートするさまざまなオプションについて説明します。いくつかのオプションは、画像のプロパティを問い合わせるために使われ、他のオプションは、画像を書き込む方法を切り替えるために使われます。
定数 | 値 | 説明 |
---|---|---|
QImageIOHandler::Size | 0 | 画像のオリジナルサイズ。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 画像の メ タ デー タ か ら 画像のサ イ ズ を読み込んで、 こ のサ イ ズをoption() からQSize と し て返す こ と が期待 さ れます。 |
QImageIOHandler::ClipRect | 1 | ク リ ッ プ矩形、 ま たは ROI (Region Of Interest)。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、read() で元画像か ら、 与え ら れたQRect 領域のみを読み込む こ と が期待 さ れます。 |
QImageIOHandler::ScaledSize | 4 | 画像の拡大縮小サイズ。こ のオプ シ ョ ン をサポー ト し てい る ハン ド ラ は、 ク リ ッ プ矩形変換 (ClipRect) を適用 し た後に、 画像を与え ら れたサ イ ズ (QSize )に拡縮す る こ と が期待 さ れます。ハン ド ラ が こ のオプシ ョ ンに対応 し ていない と きは、QImageReader は、 画像が読み込まれた後にスケーリングを行います。 |
QImageIOHandler::ScaledClipRect | 3 | 画像の拡大縮小 さ れた ク リ ッ プ矩形 (または ROI (Region Of Interest))。こ のオプ シ ョ ン をサポー ト し てい る ハン ド ラ は、 ス ケー リ ン グ (ScaleSize) ま たは通常の ク リ ッ ピ ン グ (ClipRect) を適用 し た後に、 与え ら れた ク リ ッ プ矩形 (QRect ) を適用する こ と にな り ます。ハン ド ラ が こ のオプシ ョ ンをサポー ト し ていない と きは、QImageReader は、 画像が読み込まれた後に、 拡縮 さ れた ク リ ッ プ矩形を適用 し ます。 |
QImageIOHandler::Description | 2 | 画像の説明。GIF や PNG の よ う な画像形式のなかには、 画像デー タ にテ キ ス ト や コ メ ン ト を埋め込む こ と がで き る も のがあ り ます (た と えば著作権情報を格納す る ために)。テキストはキーと値のペアで格納されるのが一般的ですが、すべてのテキストを1つの連続したブロックに格納するフォーマットもあります。QImageIOHandler は、テキストを1つのQString として返します。ここで、キーと値は「:」で区切られ、キーと値のペアは2つの改行( \n )で区切られます。例えば、"Title:例えば、"Title: SunsetnAuthor:例えば、"Title: SunsetAuthor: Jim SmithnSarah Jonesn "である。テキストを1つのブロックに格納するフォーマットは、"Description "をキーとして使用できる。 |
QImageIOHandler::CompressionRatio | 5 | 画像データの圧縮率。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 書 き 込み時に こ のオプシ ョ ンの値 (int 型) に従っ て圧縮率を設定す る こ と にな り ます。 |
QImageIOHandler::Gamma | 6 | 画像のガンマレベル。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 書 き 込み時に こ のオプシ ョ ンの値 (float) に従っ て画像のガ ン マ値を設定す る こ と にな り ます。 |
QImageIOHandler::Quality | 7 | 画像の品質レベル。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、 書 き込み時に こ のオプシ ョ ンの値 (int) に従っ て画質レ ベルを設定する こ と が期待 さ れます。 |
QImageIOHandler::Name | 8 | 画像の名前。こ のオプ シ ョ ン をサポー ト する ハン ド ラ は、 画像の メ タ デー タ か ら 名前を読み込んで こ れをQString と し て返すか、 ま たは画像を書き込む際にその名前を画像の メ タ デー タ に格納する こ と が期待 さ れます。 |
QImageIOHandler::SubType | 9 | 画像のサブタイプ。こ のオプシ ョ ンに対応 し てい る ハン ド ラ は、 サブ タ イ プの値を、 画像の読み出 し や書 き込み時に利用す る こ と がで き ます。た と えば、 PPM ハン ド ラ は "ppm" か "ppmraw" のサブ タ イ プ値を持つ こ と がで き ます。 |
QImageIOHandler::IncrementalReading | 10 | QImageReader は画像をアニメーションとして扱います。 |
QImageIOHandler::Endianness | 11 | 画像のエンディアン。画像フォーマットによっては BigEndian や LittleEndian として保存できるものもあります。エンディアンをサポートするハンドラは、このオプションの値を使用して、画像をどのように保存すべきかを決定します。 |
QImageIOHandler::Animation | 12 | ア ニ メ ーシ ョ ン をサポー ト し てい る 画像フ ォーマ ッ ト は、supportsOption() で こ の値に true を返 し ます。 |
QImageIOHandler::BackgroundColor | 13 | そうでない場合は false が返されます。特定の画像フォーマットでは、背景色を指定することができます。BackgroundColorをサポートするハンドラは、画像を読み込むときに背景色をこのオプション(QColor )に初期化します。 |
QImageIOHandler::ImageFormat | 14 | ハン ド ラ が返す画像のデー タ 形式。こ れは、QImage::Format に挙げ ら れてい る ど ち ら かの形式にな る 可能性があ り ます。 |
QImageIOHandler::SupportedSubTypes | 15 | さ ま ざ ま な保存バ リ ア ン ト をサポー ト し てい る 画像フ ォーマ ッ ト は、 対応 し てい る バ リ ア ン ト 名の リ ス ト (QList<QByteArray>) を こ のオプシ ョ ンで返す必要があ り ます。 |
QImageIOHandler::OptimizedWrite | 16 | こ のオプ シ ョ ン をサポー ト す る ハン ド ラ は、 書 き 込み時に最適化フ ラ グ を オ ンにす る こ と が期待 さ れます。 |
QImageIOHandler::ProgressiveScanWrite | 17 | こ のオプ シ ョ ン をサポー ト す る ハン ド ラ は、 画像をプ ロ グ レ ビ シ ョ ン ス キ ャ ン画像 と し て書 き 出す こ と が期待 さ れます。 |
QImageIOHandler::ImageTransformation | 18 | こ のオプ シ ョ ン をサポー ト す る ハン ド ラ は、 画像の変換 メ タ デー タ を読み込む こ と がで き ます。このオプションをサポートするハンドラは、変換自体を適用すべきではありません。 |
enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations
この enum は、画像フォーマット (通常は EXIF) でサポートされているさまざまな変換や方向について記述します。
定数 | 値 | 説明 |
---|---|---|
QImageIOHandler::TransformationNone | 0 | 変換を行いません。 |
QImageIOHandler::TransformationMirror | 1 | 画像を水平にミラーします。 |
QImageIOHandler::TransformationFlip | 2 | 画像を垂直にミラーします。 |
QImageIOHandler::TransformationRotate180 | TransformationMirror | TransformationFlip | 画像を180度回転させる。これは、水平と垂直の両方をミラーリングするのと同じです。 |
QImageIOHandler::TransformationRotate90 | 4 | 画像を90度回転させる。 |
QImageIOHandler::TransformationMirrorAndRotate90 | TransformationMirror | TransformationRotate90 | 画像を水平にミラーし、90度回転させる。 |
QImageIOHandler::TransformationFlipAndRotate90 | TransformationFlip | TransformationRotate90 | 画像を垂直にミラーし、90度回転させる。 |
QImageIOHandler::TransformationRotate270 | TransformationRotate180 | 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 に設定します。 画像ハンドラは、画像の読み書きの際にこのデバイスを使用します。
デバイスの設定は 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
を返します。たとえば、QImageIOHandler がSize オプションをサポートしている場合、 supportsOption(Size) は true を返す必要があります。
[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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。