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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
python根据路径导入模块的方法
Sep 30 Python
python实现简单socket通信的方法
Apr 19 Python
Python调用C++程序的方法详解
Jan 24 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
Python3匿名函数用法示例
Jul 25 Python
Django对models里的objects的使用详解
Aug 17 Python
python生成requirements.txt的两种方法
Sep 18 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
Python如何对齐字符串
Jul 30 Python
Python实现Canny及Hough算法代码实例解析
Aug 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
php公用函数列表[正则]
2007/02/22 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
Python测试人员需要掌握的知识
2018/02/08 Python
pandas去除重复列的实现方法
2019/01/29 Python
Python中turtle库的使用实例
2019/09/09 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
工地安全检查制度
2014/02/04 职场文书
经理助理岗位职责
2015/02/02 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
MySQL数据库表约束讲解
2022/06/21 MySQL