千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍"Python怎么从GUI界面加载并显示图片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么从GUI界面加载并显示图片"文章能帮
千家信息网最后更新 2025年02月01日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安全错误 数据库的锁怎样保障安全 手机软件开发公司报价 网络安全大专生就业 数据库可以查看不到表 金融科技和互联网金融一样吗 php设置数据库 服务器端登录信息处理异常 大学生网络安全教育音频 网络技术服务与管理 海南飞腾服务器 电脑qq服务器拒绝了你发送文件 汕头网络安全网站 艾斯医药商务系统数据库 软件打不开服务器运行失败 网络技术培训哪个直播平台好 服务器被人改密码可以查吗 学车驾驶模拟器的软件开发成本 南京网络安全宣传周开幕式 服务器查看用户名 河北正规软件开发设计质量保障 软件开发考什么证书 frp服务器连接win客户端 郧西正规软件开发专业服务 网络安全法立法的重要目的是什么 丰台区数据网络技术咨询软件 网络安全暑假实践活动 软件开发五大设计模式 西门子服务器中文 软件开发项目时间评估 绿色阅读网络安全书签制作 网络安全信息公众号
0