QImage和QPixmap都是Qt图像处理与绘制相关的类。那么他们之间有什么区别吗?
QImage:设备无关的图像类
- 独立于具体硬件的图像类
- 主要用于读写图像文件,针对IO访问而设计
- 能够直接在像素级对图像进行处理
QPixmap:设备相关图像类
- 依赖于具体硬件的图像类
- 主要用于绘图,针对屏幕显示而设计
- 显示效果依赖于所在平台的绘图引擎(不可移植)
QImage 是为了读写图片文件设计的,在进行图像操作与处理时可以与显示没关系,这时候我们可以使用 QImage。但是如果我们想要在显示器显示一张图片时,我们就需要用到 QPixmap 了。
Qt 图像类都继承自 QPaintDevice。所以 QPainter 能直接在图像是绘制图形。
QImage 和 QPixmap 能够相互转换。
假如我在外存中有张图片想显示到屏幕该怎么做?可以用 QImage 将外存中的图像文件数据读到内存中,再将 QImage 对象在内存中转换成 QPixmap ,就能显示出来了。
假如我想将显存中的图像保存起来该怎么做?可以用 QPixmap 对象转换成 QImage 对象,再利用 QImage 对象将数据保存在外存中。
特殊技能
QImage:
- 读取图像文件,直接进行像素级操作
- 内置简易图像处理相关的算法
QPixmap:
- 最大限度的利用硬件(显卡)加速,增强图像显示效果
- 屏幕截图,窗口截图,组件截图,。。。。
上代码吧
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QImage img;
if(img.load("test.jpg"))
{
for(int