python - InterfaceError:错误绑定参数 4 - 可能不支持 type.for 图像和 blob 图像不会显示在 QTLabel
问题描述
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets, QtGui
from PIL import Image, ImageQt
import cv2 as cv
img = cv.imread('1.1 cat.jpeg.jpeg')
im = Image.fromarray(img)
im.save('file.png')
con = lite.connect('Final_Avirs.db')
cur = con.cursor()
def createtb():
queryveh = """CREATE TABLE IF NOT EXISTS VehicleTB(Scan_DI INTEGER PRIMARY KEY NOT NULL UNIQUE,
Vehicle_number TEXT NOT NULL, Vehicle_type TEXT NOT NULL, Cam_loc TEXT NOT NULL, Date_Time TEXT NOT NULL,
Vehicle_number_pic BLOB NOT NULL) """
cur.execute(queryveh)
con.commit()
def vehicledetailsquery(vn, vt, cl, dt, vnp):
scan_id = vn + "1"
query = " INSERT INTO 'VehicleTB' ( Vehicle_number, Vehicle_type, Cam_loc, " \
"Date_Time, Vehicle_number_pic ) VALUES( ?, ?, ?, ?, ?)"
cur.execute(query, (vn, vt, cl, dt, vnp))
con.commit()
img = Image.open('file.png')
createtb()
vehicledetailsquery('aswe23','2039230', 'cam-2', '23343', img )
app = QtWidgets.QApplication([])
def vehicletbquery():
query = "SELECT * from VehicleTB"
vehicletb = cur.execute(query).fetchall()
return vehicletb
data = vehicletbquery()
ww = QtWidgets.QLabel()
for i, d in enumerate(data):
if i == 6:
ww.w.setPixmap(QtGui.QPixmap.fromImage(d))
ww.show()
app.exec()
我知道问题出在我的图像值但我不知道如何处理它,我能做的最好的是将枕头图像转换为字符串并这样做,我可以在 PYQT 标签上显示图像,标签只是出来是空的。
解决方案
数据类型 BLOB 保存字节,在您的情况下,您尝试保存抛出错误的 PIL 对象。解决方案是转换这些对象。然后从数据库获得的数据也会发生同样的情况,但反过来:
import sqlite3
import io
from PyQt5 import QtGui, QtWidgets
from PIL import Image
import cv2 as cv
img = cv.imread('1.1 cat.jpeg.jpeg')
im = Image.fromarray(img)
im.save("file.png")
con = sqlite3.connect("Final_Avirs.db")
cur = con.cursor()
def createtb():
queryveh = """CREATE TABLE IF NOT EXISTS VehicleTB(Scan_DI INTEGER PRIMARY KEY NOT NULL UNIQUE,
Vehicle_number TEXT NOT NULL, Vehicle_type TEXT NOT NULL, Cam_loc TEXT NOT NULL, Date_Time TEXT NOT NULL,
Vehicle_number_pic BLOB NOT NULL) """
cur.execute(queryveh)
con.commit()
def vehicledetailsquery(vn, vt, cl, dt, vnp):
scan_id = vn + "1"
query = (
" INSERT INTO 'VehicleTB' ( Vehicle_number, Vehicle_type, Cam_loc, "
"Date_Time, Vehicle_number_pic ) VALUES( ?, ?, ?, ?, ?)"
)
cur.execute(query, (vn, vt, cl, dt, vnp))
con.commit()
img = Image.open("file.png")
createtb()
# convert to bytes
f = io.BytesIO()
img.save(f, format="PNG")
img_bytes = f.getvalue()
vehicledetailsquery("aswe23", "2039230", "cam-2", "23343", img_bytes)
def vehicletbquery():
query = "SELECT * from VehicleTB"
vehicletb = cur.execute(query).fetchall()
return vehicletb
data = vehicletbquery()
app = QtWidgets.QApplication([])
scroll_area = QtWidgets.QScrollArea(widgetResizable=True)
container = QtWidgets.QWidget()
scroll_area.setWidget(container)
lay = QtWidgets.QVBoxLayout(container)
for row_data in data:
for i, d in enumerate(row_data):
if i == 5:
# QPixmap from bytes
pixmap = QtGui.QPixmap()
pixmap.loadFromData(d)
label = QtWidgets.QLabel()
label.setPixmap(pixmap)
lay.addWidget(label)
scroll_area.show()
app.exec()
推荐阅读
- php - Laravel 是否可以改进 Auth::id() 查询?
- xamarin.android - Xamarin android BiometricPrompt.AuthenticationCallback OnAuthenticationError 不可用
- angular - 从服务返回数据的方法
- javascript - How to refresh Javascript code in IFrame?
- php - SSH to Fortigate firewall failing using phpseclib
- javascript - 从 JSON 中获取图像
- git - Git: Keep system generated/modifed files unaffected my commits
- javascript - How to connect the Redux store to a dynamically created components outside root?
- python - XML writing- new file
- python - Changing Key name in mongodb based on its value