python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例


Posted in Python onFebruary 27, 2020

PyQt5图片显示控件QPixmap介绍

QPixmap类用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于在标签或按钮上显示图像

QPixmap可以读取的图像文件类型有BMP,GIF,JPG等

QPixmap类中常用的方法

方法 描述
copy() 从QRect对象复制到QPixmap对象
fromImage() 将QImage对象转换为QPixmap对象
grabWidget() 从给定的一个窗口小控件创建一个像素图
grabWindow() 在窗口创建数据的像素图
load() 加载图像文件作为QPixmap对象
save() 将QPixmap对象保存为文件
toImage() 将QPixmap对象转换为QImage对象

QPixmap的使用实例

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class QpixmapDemo(QWidget):
  def __init__(self,parent=None):
    super(QpixmapDemo, self).__init__(parent)
    self.setWindowTitle('QPixmap例子')

    layout=QVBoxLayout()

    lab1=QLabel()
    lab1.setPixmap(QPixmap('\images\python.jpg'))

    layout.addWidget(lab1)

    self.setLayout(layout)

if __name__ == '__main__':
  app = QApplication(sys.argv)
  demo =QpixmapDemo()
  demo.show()
  sys.exit(app.exec_())

效果如图

python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

代码分析

在这个例子中,使用setPixmap()将图像显示在QLabel上

lab1=QLabel()
    lab1.setPixmap(QPixmap('\images\python.jpg'))

QImage与QPixmap区别

不同平台,依赖、存储不同

QPixmap依赖于硬件,QImage不依赖于硬件。

在X11, Mac 以及 Symbian平台上。

QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。QPixmap: 具体实现是依赖于系统的,它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端,并不使用任何的GDI资源,可能看起来并没有多大区别。

目前的Qt会把QPixmap都存储在graphics memory中,这明显是依赖硬件的。因此我们对QPixmap的使用需要格外注意。

那么Qt为什么要这么做呢?很简单,设计之初QPixmap就是用来加速显示的,例如我们在paint的时候用QPixmap就会比用其他类的效果好许多。

用处分工不同

QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。

当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的。

总结:

对于显示小图片时,可以用QPixmap进行加载,绘画图片。当绘画大图片时候,此时最好实现QImage进行加载,因为QImage本身主要是为图像I/O、图片访问和像素修改而设计的,它可以实现对图片旋转、缩放等。然后通过QPixmap实现绘图。

本文详细介绍了PyQt5图片显示控件QPixmap详细使用方法与实例,还包括PyQt5中QImage控件与QPixmap控件的区别,更多关于这方面的知识请查看下面的相关链接

Python 相关文章推荐
python实现分页效果
Oct 25 Python
python3.x实现发送邮件功能
May 22 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python队列、进程间通信、线程案例
Oct 25 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Python Http请求json解析库用法解析
Nov 28 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
Spy++的使用方法及下载教程
Jan 29 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 Python
python程序文件扩展名知识点详解
Feb 27 #Python
python读取多层嵌套文件夹中的文件实例
Feb 27 #Python
python统计文章中单词出现次数实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 #Python
Python如何使用OS模块调用cmd
Feb 27 #Python
You might like
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php中的时间显示
2007/01/18 PHP
Php Mssql操作简单封装支持存储过程
2009/12/11 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
jQuery菜单插件用法实例
2015/07/25 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
广州地球村科技数据库题目
2016/04/25 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
5.1手机促销活动
2014/01/17 职场文书
旷工辞退通知书
2015/04/17 职场文书
毕业设计致谢词
2015/05/14 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
js判断两个数组相等的5种方法
2022/05/06 Javascript
MYSQL如何查看操作日志详解
2022/05/30 MySQL