码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt 处理图像数据的类区别(QPixmap、QImage、QPicture)


    1.简介

    Qt提供了处理图像数据的类:QImage, QPixmap和QPicture。

    • QImage是为I/O和直接像素访问和操作而设计和优化的
    • QPixmap是为在屏幕上显示图像而设计和优化的。
    • QPicture类是一个记录和回放QPainter命令的绘制设备。

    2.QImage

    QImage类提供了一个独立于硬件的图像表示,它允许直接访问像素数据,并且可以用作绘制设备;适合加载大图片;可以在线程中绘图,可以优化UI响应时间。绘制图片出来的效果和平台无关,QImage上绘图比较快,但显示它则比较慢。

    绘制图片:

    1. QImage image;
    2. image.load("./test.png");
    3. QPainter painter(this);
    4. painter.drawImage(0,0,image);

    绘制大图:可以用QImage先把图片加载进来,改变大小,转成QPixmap。

    1. QImage image;
    2. image.load("./big.png");
    3. QPixmap pixmap = QPixmap::fromImage(image.scaled(size(),Qt::KeepAspectRatio));
    4. QPainter painter(this);
    5. painter.drawPixmap(0,0,pixmap);;

    2.QPixmap

    QPixmap绘图依赖硬件,QPixmap的设计本来就是用来加速显示,用paint绘图时用QPixmap会比其他类的效果好很多。一般小图片用QPixmap加载,和平台相关(在不同的平台可能绘制出的效果不一样)。QPixmap上绘图比较慢,但显示它则比较快。

    QLabel加载图片:

    ui->lbImg->setPixmap(QPixmap("test.jpg"));

    QPixmap与QImage互相转换

    1. QImage image = pixmap.toImage();
    2. QPixmap pixmap = QPixmap::fromImage(image);

    3.QPicture

    记录和回放QPainter的绘图指令

    • begin() 开始在QPicture上绘图 
    • end() 结束在QPicture上绘图 
    • save() 保存操作为.pic文件 
    • load() 加载.pic文件

    示例:画圆,保存图片

    1. QPicture picture;
    2. QPainter painter;
    3. painter.begin(&picture); // paint in picture
    4. painter.drawEllipse(10,20, 80,70); // draw an ellipse
    5. painter.end(); // painting done
    6. picture.save("drawing.pic"); // save picture

    示例:加载图片

    1. QPicture picture;
    2. QPainter painter;
    3. picture.load("drawing.pic");
    4. painter.begin(this);
    5. painter.drawPicture(0,0,picture);
    6. painter.end();

  • 相关阅读:
    ES相关学习
    一文搞懂EMAS Serverless小程序开发|电子书免费下载
    解锁智慧照明新玩法,Construlita携手涂鸦智能打造创新方案!
    【Maven】Maven快速入门2022版:从概念、安装到基本使用
    多态概述、多态中成员变量的访问原则、引用数据类型的向上向下转型、多态的应用、包和访问权限
    新一轮消费浪潮席卷而来,中国科技驱动行业新发展
    CS5268完美代替AG9321MCQ Typec多合一扩展坞方案
    r语言tidyverse教程:5 字符串处理stringr
    深入体验了4大知名BI分析工具,终于找到了最适合我们公司的一款
    JAVA应用导致 CPU 100% 占用问题排查
  • 原文地址:https://blog.csdn.net/wzz953200463/article/details/125491397
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号