2

ドキュメントのどこにもこれが表示されないため、おそらく存在しませんが、念のため:

パラメータとして QImages のベクトルを受け入れる関数があります。各 QImage は、ある時点でディスクからロードされ、編集されていません。つまり、読み取られているだけです。理想的には、すべての QImage をループして、それらのファイル パスのリストを XML ファイルに出力することです。

残念ながら、ドキュメントには、イメージが読み込まれた元のファイル パスを取得する方法はありません。だから私の質問は、QImageだけが与えられた場合、QImageが最初にロードされたファイルパスかどうかを判断することは可能ですか?

次のようなもの:

QString QImage::getOriginalFilepath();

これはおそらく無益な質問であることはわかっていますが、質問する価値は常にあると思います。

(ちなみに、私はQt 4.7を使用しています。)

4

3 に答える 3

4

コードを調べたところ、その情報はどこにも保存されていないようです。QImage::load (およびコンストラクター) は QImageReader(fileName,format).read() を使用し、結果をそれ自体にコピーします。QImageReader は、読み取りが完了するとすぐにデバイス表現 (開かれたファイル オブジェクト) を削除するように設定されています。

したがって、要約すると、これは不可能であると思われます。

于 2010-10-05T15:55:54.840 に答える
4

また、QImage はパスを取得するためのインターフェイスを提供していないようです。また、QImage を特定のパスに関連付ける必要がないため、これは欠落している機能ではないと思います。ほとんどの場合、QImage には対応する物理ファイルがありません。

したがって、あなたの状況での最善の方法は、QImage をサブクラス化し、この機能を追加することです。

class MyImage : public QImage {
   QString path_;
public:
   MyImage(const QString& path); 
   QString path(); // getter 
};

実装の詳細は割愛します。

于 2010-10-05T16:00:55.923 に答える
0

私は通常、QImage とイメージ パスを保持するための構造体を作成します。

struct Image
{
    QImage imageData;
    QString filename;
};
于 2014-11-18T23:22:29.797 に答える