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通过pil模块获得图片exif信息的方法
Mar 16 Python
使用python实现省市三级菜单效果
Jan 20 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
python实现tail -f 功能
Jan 17 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
Python 全局空间和局部空间
Apr 06 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
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Python中SQLite如何使用
2020/05/27 Python
python实现发送邮件
2021/03/02 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
六月份红领巾广播稿
2014/02/03 职场文书
公司聘任书模板
2014/03/29 职场文书
2014年党支部承诺书
2014/05/30 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技