千家信息网

Python怎么从GUI界面加载并显示图片

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要介绍"Python怎么从GUI界面加载并显示图片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么从GUI界面加载并显示图片"文章能帮
千家信息网最后更新 2024年11月25日Python怎么从GUI界面加载并显示图片

这篇文章主要介绍"Python怎么从GUI界面加载并显示图片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么从GUI界面加载并显示图片"文章能帮助大家解决问题。

【示例代码】

# coding=utf-8# @Auther : "鹏哥贼优秀"# @Date : 2019/8/18# @Software : PyCharm
from PyQt5 import QtCore, QtGui, QtWidgetsimport sysimport requests
class Ui_Dialog(QtWidgets.QWidget): def __init__(self): super(Ui_Dialog, self).__init__()
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(561, 431) self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(70, 60, 75, 23)) self.pushButton.setObjectName("pushButton") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(100, 110, 341, 231)) self.label.setObjectName("label")
self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.pushButton.setText(_translate("Dialog", "打开图片")) self.label.setText(_translate("Dialog", "显示图片")) self.pushButton.clicked.connect(self.show_urlimage) # 从本地电脑加载图片 def show_localimage(self): imgName, imgType = QtWidgets.QFileDialog.getOpenFileName(self, "打开图片", "", "*.jpg;;*.png;;All Files(*)") pix = QtGui.QPixmap(imgName) jpg = pix.scaled(self.label.width(), self.label.height()) self.label.setPixmap(jpg) # 直接从网站中加载图片 def show_urlimage(self): url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1566126255397&di=e6038a03911121946883ce68aad6474e&imgtype=0&src=http%3A%2F%2Fnews.mydrivers.com%2FImg%2F20120227%2F2012022709173765.jpg" r = requests.get(url) print(r.content) with open("1.jpg","wb")as f: f.write(r.content) pix = QtGui.QPixmap() pix.loadFromData(r.content) jpg = pix.scaled(self.label.width(), self.label.height()) self.label.setPixmap(jpg)
if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) main = QtWidgets.QDialog() mainwindow = Ui_Dialog() mainwindow.setupUi(main) main.show() sys.exit(app.exec())

【效果】

1、本地加载:

2、网站加载图片

【知识点】

1、pyqt5中用什么控件显示图片?另外,加载显示图片的代码流程又是怎么样的?

答:示例代码采用的是label控件,在其他博客中 看到Graphics组件好像也可以。另外,图片加载的代码流程如下图(以本地图片为例):

其中,pix.scaled()是为了将图片大小进行缩放,用于适应Label组件的大小设置。

本地图片和网络图片加载方式的不同:

1、获取方式:网络图片通过request.get方式来访问图片,本地图片是调用QFileDailog类来 加载图片;

2、QPixmap加载数据:因为QPixmap()一般是直接加载图片名称的,要如何加载网络图片这块,花了我挺多时间的,一直不知道要怎么解决QtGui.QPixmap(r.content)的报错(content为byte型),后来才看到规避方法是:

pix.loadFromData(r.content)

2、遇到的坑:

(1)用Qt Designer制作的gui界面并转化成py脚本的话,默认Ui_Dialog类是object,不会明显注明继承的父类,从而导致后面程序报错。因此需要声明下父类,这里QWidget(基类)或者QtWidgets.QDialog(对话类)都可以;

(2)刚 开始加载网络图片时,是这 样写的:

pix = QtGui.QPixmap().loadFromData(r.content),但是发现pix返回的是True,而不是具体加载图片后的类。因此,二进制图片数据的加载需要单独写一行。

(3)因为我是通过百度风景的方式,获取图片的。因此图片的URL地址必须是能直接打开图片,而不是有其他乱七八糟的网页元素。解决方法只要右键图片复制图片地址就行。

3、引申知识(还没怎么深入了解):

(1)如何写图片数据并保存:

with open("1.jpg","wb")as f:
f.write(r.content)

注意,这是如果是"w"是会报错的。

(2)用PIL库显示图片:

from PIL import Image
f = Image.open('1.jpg')
f.show()
f.save("new.jpg")

(3)用numpy库图片转换成数组:

import numpy as np
res = np.array(Image.open("1.jpg"))

关于"Python怎么从GUI界面加载并显示图片"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

图片 知识 界面 代码 方式 网络 数据 方法 不同 地址 大小 控件 流程 知识点 示例 组件 网站 行业 优秀 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全手抄报一等奖三年级竖着 学习网络安全教育活动 冬奥会冬残奥会网络安全保障工作总结 网络安全的监管机构 医院系统需要服务器吗 河北金碟互联网络技术公司 辰华网络技术服务公司 服务器机房维护厂商安全管理 文件服务器上传文件地址 云服务器安全吗公司可以用吗 陕西语音网络技术服务设计 公司服务器文件管理 数据库实时错误1304 想学个网络技术去哪里学 服务器机柜尺寸含外框吗 智慧农业软件开发商 国际版刺激战场哪个服务器好 云数据库与mysql 互联网科技公司路演ppt UE4需要自己开发服务器吗 网络安全法日志保存哪些 数据库常用的技术语言有那些 珠海卫星软件开发商家 耀宏网络技术有限公司 网络技术专科课程 php怎么传到服务器上 1与3之间的数据库 ctf网络安全大赛第一名 2021虎符网络安全赛道wp 普陀区重型网络技术价格走势
0