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之PyUnit单元测试实例
Oct 11 Python
在Python中使用列表生成式的教程
Apr 27 Python
Python实现的简单dns查询功能示例
May 24 Python
Python中Threading用法详解
Dec 27 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
python实现石头剪刀布小游戏
Jan 20 Python
基于python的ini配置文件操作工具类
Apr 24 Python
Django给admin添加Action的步骤详解
May 01 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
Django中的cookie和session
Aug 27 Python
Django配置文件代码说明
Dec 04 Python
pytorch 修改预训练model实例
Jan 18 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/08/21 无线电
php生成随机密码的几种方法
2011/01/17 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
2017/04/27 PHP
Js获取事件对象代码
2010/08/05 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
小程序采集录音并上传到后台
2019/11/22 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python函数生成器原理及使用详解
2020/03/12 Python
Python bisect模块原理及常见实例
2020/06/17 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
驾驶员培训方案
2014/05/01 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android