Qt图像处理与绘制

QImage是设备无关的图像类,适用于读写图像文件和像素级处理;QPixmap是设备相关的图像类,用于屏幕显示,依赖于硬件。两者可以相互转换。QImage适合图像处理,QPixmap擅长屏幕显示和硬件加速。Qt中的图像类继承自QPaintDevice,可以配合QPainter进行绘图。代码示例展示了如何读取图像、灰度化处理、保存和显示。QPixmap还能用于截图功能,可用于创建截图或录屏工具。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值