我会尽量简短。我有一个代码,可以在一天中的不同时间将数据发送到数据库。发送的一种数据是来自热敏相机的图像。这部分工作正常,将图像编码为base64,并以“longblob”数据类型将其发送到db。
现在,我正在制作一个脚本,从数据库中读入图像,但是我的代码将编码后的图像字符串作为整数读取。
# Audit to the database
with open("C:/Users/danie/Desktop/image7.png", "rb") as image:
image_read = image.read()
Image =base64.b64encode(image_read)
sql = "INSERT INTO flirimage (Image) VALUES (%s)"
arg=('Image')
cursor.execute(sql % arg)
db.commit()
现在读入数据并存储它:(如果你只是读入一个文件,这个代码就可以工作!!!)
import MySQLdb as mariadb
import base64
db = mariadb.connect(host="127.0.0.1", user="root", passwd="SECRET",
db="SECRET")
cursor = db.cursor()
ImageEncoded=cursor.execute("select * from flirimage")
db.commit()
image_64_decode=base64.b64decode(ImageEncoded)
filename='C:/Users/danie/Desktop/image_audit.png'
with open(filename, 'wb') as f:
f.write(image_64_decode)
db.close()
运行代码时:
TypeError: argument should be a bytes-like object or ASCII string, not 'int'
ImageEncoded
Out[38]: 1
在我看来,base64字符串在db中的保存方式存在一些问题。但我可能错了。
编辑:
我想说明数据库中的数据是直接编码的。在运行第一个代码之后。我没有把整个base64字符串包含到这篇文章中,因为它非常长。。。。
Image
Out[42]: b'iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAAAAABQyaazAAAgAElEQVR4ARzB68.............................
暂无答案!
目前还没有任何答案,快来回答吧!