千家信息网

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

发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要介绍"Python怎么从GUI界面加载并显示图片"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Python怎么从GUI界面加载并显示图片"文章能帮
千家信息网最后更新 2025年02月19日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安全错误 数据库的锁怎样保障安全 国防科大网络安全学科评估排名 网络谣言对网络安全有什么影响 角色数据库后缀 衢州桌面软件开发工具 华为s6云服务器如何设置 显示代理服务器有问题怎么办 csgo为什么连接到服务器 大专生在软件开发行业 实况手游国际服的数据库 高速服务器有超时的吗 长剑软件开发模型 58 网络安全 天津游爱网络技术有限公司 服务器任务管理器在哪 北大青鸟学软件开发好就业吗 大话手游服务器等级 我的世界免费基岩版服务器 广州ai服务器生产厂商 安徽云主机服务器哪个厂家质量好 网络技术标准分类 知名的山东虚拟主机云服务器 数据库系统三级模式有什么 江西哪个专科软件开发专业好 内网服务器证书过期 fm2019巨型数据库 国家卫健委核酸数据库更新频次 江苏智能软件开发维修价格 儿童网络安全规则 局域网ftp 服务器搭建 普陀区无线网络技术管理系统
0