画像ファイルを QImage にロードしてから再保存すると、データが失われる可能性はありますか? それとも、変換/編集がない場合、ロスレスですか?
2 に答える
すべては、ロスレスの意味に依存します。イメージ ファイル形式がロスレス (PNG など) の場合、ディスク -> QImage -> ディスク ラウンドトリップは、イメージのビットマップの永続性のみを保証します。画像以外のデータ (属性など) は保持されません。
画像形式がロスレスでない場合(JPEG など)、実際にはラウンドトリップによって画像の品質が低下します。
QImage
ビットマップのロスレス ラウンドトリップをサポートするには、何をする必要があるかを考える必要があります。デコードされた画像のビットマップだけでなく、ソース ファイルの内容も格納する必要があります。後者は、画像に変更が加えられたら破棄する必要があります。のメモリ使用量を 2 倍にする可能性がある時期尚早な悲観化になるため、実装されませんでしたQImage
。
あなたがQImage
望むように動作する -lookalike を自由に実装できます。コピー オン ライト セマンティクスを適切にサポートする必要があることに注意してください。また、イメージ ファイル データは内部的に保持されQSharedData
、QSharedDataPointer
. detach
const 以外のすべてのメソッドで、このデータを強制的に使用する必要があります。