界面展示图片有两种方式:图片,Base64编码的图片
1,通过图片的地址路径加载图片并显示
pixmap = QPixmap(150, 150)
ba = base64.b64decode(self.QRCodeURL) // 显示其他格式的图片在这里改
pixmap.loadFromData(ba)
self.label.setPixmap(pixmap)
self.label.setScaledContents(False)
//self.QRCodeURL,为图片Base64编码形成的字符串
图片数据是我自己编写的Django服务器上以Base64编码的图片,在本地接收后解码为图片显示在QLabel中。
服务器代码:
def query_userinfo(request):
name = request.POST.get('name')
name_check = charge.objects.get(name = name)
dest = base64.b64encode(name_check.img)
returnData = {
'code':'0',
'msg':'success',
'name':name,
'mobile':name_check.phonenum,
'iccard':name_check.icnum,
'pic':dest.decode('utf-8')
}
return HttpResponse(json.dumps(returnData), content_type="application/json")
本地一开始的代码,这个代码无法再QLabel中显示图片:
def query_userinfo(self):
postData = {
'name':self.lineEdit_3.text()
}
r = requests.post("http://127.0.0.1:8000/app01/queryuserinfo/", data=postData)
json_data = json.loads(r.text)
self.mobile_show.setText(json_data.get('mobile'))
self.precard_show.setText(json_data.get('iccard'))
pic_data = json_data.get('pic').encode('utf-8')
pixmap = QPixmap(151,171)
ba = QtCore.QByteArray.fromBase64(pic_data)
pixmap.loadFromData(ba)
self.pic_show.setPixmap(pixmap)
return None
无法显示的原因就是QLabel的大小和我的图片不匹配,后来对QPixmap调用Scaled函数后依旧不行。
pixmap.scaled(151, 171, aspectRatioMode = Qt.IgnoreAspectRatio)
后来才发现添加
self.pic_show.setScaledContents(True)
这行代码后就可以正确显示。这个函数的意义就在于是否将缩放其内容以填充所有可用空间。当启用时,标签显示一个像素图,它将缩放像素图以填充可用空间。该属性的默认值是False。
2,通过opencv 或者PIL库读取图片数组,然后通过QPixmap展示图片
from PyQt5.Qt import *
import cv2
# 设置展示控件
pic_show_label = QtWidgets.QLabel()
# 设置窗口尺寸
pic_show_label.resize(500,500)
# 图片路径
img_path="image_path.jpg"
# 通过cv读取图片
img=cv2.imread(img_path)
# 通道转化
RGBImg=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
# 将图片转化成Qt可读格式
image=QtGui.QImage(RGBImg,RGBImg.shape[1],RGBImg.shape[0],QtGui.QImage.FormatRGB888)
# 加载图片,并自定义图片展示尺寸
image = QtGui.QPixmap(image).scaled(400, 400)
# 显示图片
pic_show_label.setPixmap(image
————————————————
版权声明:本文为优快云博主「韩小哥的博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/python_pycharm/article/details/102593072
参考: