当我将图像文件加载到 QImage 中然后重新保存时,我是否可能会丢失数据?还是在没有任何转换/编辑的情况下无损?
问问题
978 次
2 回答
1
一切都取决于您所说的无损。如果图像文件格式是无损的(比如 PNG),那么磁盘->QImage->磁盘往返只能保证图像位图的持久性。不会保留非图像数据(属性等)。
如果图像格式不是无损的(例如 JPEG),那么往返实际上会降低图像的质量。
您需要考虑QImage
需要做什么才能支持位图的无损往返。它不仅需要存储解码的图像位图,还需要存储源文件的内容。一旦对图像进行任何修改,就需要丢弃后者。它没有被实现,因为这将是一个过早的悲观化,可能会使QImage
.
你可以自由地实现一个QImage
-lookalike,它会按照你想要的方式运行。请注意,您应该正确支持写时复制语义,并且您的图像文件数据必须保存在内部QSharedData
并通过QSharedDataPointer
. 您需要detach
在所有非常量方法中强制使用这些数据。
于 2013-12-24T22:23:57.223 回答