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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python sys.argv用法实例
May 28 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python常见异常分类与处理方法
Jun 04 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
python线程中同步锁详解
Apr 27 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
mac安装pytorch及系统的numpy更新方法
Jul 26 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
在Python中COM口的调用方法
Jul 03 Python
利用Python检测URL状态
Jul 31 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 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
php $_ENV为空的原因分析
2009/06/01 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
秋季运动会加油稿200字
2014/01/11 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
教师节领导致辞
2015/07/29 职场文书
四群教育工作总结
2015/08/10 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android