3

画像ファイルを QImage にロードしてから再保存すると、データが失われる可能性はありますか? それとも、変換/編集がない場合、ロスレスですか?

4

2 に答える 2

3

これはフォーマットに依存すると思います。たとえば、JPEGは圧縮アルゴリズムであり、QImage に圧縮解除されます。特に圧縮の程度が変更される可能性があるため、ここで再度保存してもロスレス画像が作成されない場合があります。

ただし、pngなどの生の画像形式を使用する場合、画像を保存して QImage に再読み込みすると、データは同じになる可能性があります。

于 2013-11-04T16:45:07.767 に答える
1

すべては、ロスレスの意味に依存します。イメージ ファイル形式がロスレス (PNG など) の場合、ディスク -> QImage -> ディスク ラウンドトリップは、イメージのビットマップの永続性のみを保証します。画像以外のデータ (属性など) は保持されません。

画像形式がロスレスでない場合(JPEG など)、実際にはラウンドトリップによって画像の品質が低下します。

QImageビットマップのロスレス ラウンドトリップをサポートするには、何をする必要があるかを考える必要があります。デコードされた画像のビットマップだけでなく、ソース ファイルの内容も格納する必要があります。後者は、画像に変更が加えられたら破棄する必要があります。のメモリ使用量を 2 倍にする可能性がある時期尚早な悲観化になるため、実装されませんでしたQImage

あなたがQImage望むように動作する -lookalike を自由に実装できます。コピー オン ライト セマンティクスを適切にサポートする必要があることに注意してください。また、イメージ ファイル データは内部的に保持されQSharedDataQSharedDataPointer. detachconst 以外のすべてのメソッドで、このデータを強制的に使用する必要があります。

于 2013-12-24T22:23:57.223 に答える