读取和写入图像文件#

读取图像最常见的方式是通过使用 QImageQPixmap 的构造函数,或调用 QImage::load() 和 load() 函数。此外,Qt 还提供了 QImageReader 类,该类提供了更多的过程控制。根据底层对图像格式的支持,该类提供的函数可以节省内存并加快图像加载速度。

同样,Qt 还提供了 QImageWriter 类,它支持在存储图像之前设置特定于格式的选项,例如伽玛级别、压缩级别和质量。如果您不需要这些选项,则可以使用 QImage::save() 或 save() 代替。

QMovie

QMovie 是一个用于显示动画的便捷类,它在内部使用 QImageReader 类。一旦创建,QMovie 类提供各种功能来运行和控制指定的动画。

../_images/paintsystem-movie.png

QImageReaderQImageWriter 类依赖于 QImageIOHandler 类,它是 Qt 中所有图像格式的通用图像 I/O 接口。QImageIOHandler 对象由 QImageReaderQImageWriter 内部使用,以便向 Qt 添加对不同图像格式的支持。

支持的文件格式清单可通过 supportedImageFormats()supportedImageFormats() 函数获取。Qt 默认支持多种文件格式,并且可以通过插件添加新的格式。目前支持的格式列在 QImageReaderQImageWriter 类的文档中。

Qt 的插件机制也可以用来编写自定义图像格式处理器。这通过继承 QImageIOHandler 类来实现,并创建一个 QImageIOPlugin 对象,它是用于创建 QImageIOHandler 对象的工厂。当插件安装后,QImageReaderQImageWriter 将自动加载插件并开始使用它。