2013-11-04 23 views

回答

3

我希望這取決於格式。例如,JPEG是一種壓縮算法,然後將其解壓縮到QImage中。再次保存可能不會在此創建無損圖像,尤其是因爲可以改變壓縮程度。

但是,如果使用原始圖像格式(例如png),則在保存圖像並將其重新讀入QImage時,數據可能會相同。

1

一切都取決於你的意思是無損。如果圖像文件格式是無損的(例如PNG),那麼磁盤 - > QImage->磁盤往返只能保證圖像位圖的持久性。非圖像數據(屬性等)將不會被保留。

如果圖像格式是而不是無損(比如JPEG),那麼往返實際上會降低圖像的質量。

您需要考慮QImage需要做什麼才能支持位圖的無損往返。它不僅需要存儲解碼圖像位圖,還需要存儲源文件的內容。一旦對圖像進行任何修改,就需要丟棄後者。它沒有被實現,因爲它可能會使內存使用量加倍QImage,這是過早的悲觀情緒。

您可以自由實施QImage-lookalike,它會以您想要的方式行事。請注意,您應該正確支持寫入時複製語義,並且您的映像文件數據必須保存在QSharedData中,並通過QSharedDataPointer訪問。您需要在所有非常量方法中強制使用這些數據。

相關問題