问题描述
我似乎无法正确重建图像。这是我的代码:
import psycopg2 as pg
import pandas as pd
from PIL import Image
import io
query='SELECT * FROM plots_image.test'
con=pg.connect(...)
cur=con.cursor()
cur.execute(query)
#cur.fetchall()[0][0] would return a memoryview
image_data=cur.fetchall()[0][0].tobytes()
cur.close()
con.close()
bytes_image=io.BytesIO(image_data)
bytes_image.seek(0)
reconstructed_image = Image.open(bytes_image)
要创建以二进制形式存储的图像,请使用以下代码:
import io
from PIL import Image
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame({'A':[1,2,3],'B':[1,'C':[2,4,6]})
fig,ax=plt.subplots()
plt.plot(df.A,df.C)
plt.plot(df.A,df.B)
plt.legend(bBox_to_anchor=(1.5,1),loc='upper right',ncol=1)
buf = io.BytesIO()
plt.savefig(buf,format='png')
buf.seek(0)
我可以使用buf
从Image.open(buf)
制作图像。可以正常工作,但是我仍然必须存储它。
现在,buf
的类型为_io.BytesIO
。将图存储在数据库中时,将存储test=buf.read()
类型的bytes
。这很顺利,因为我可以测试从数据库中拉出的东西实际上等于测试。
在调用Image.open(bytes_image)
时,确保bytes_image
的类型实际上是_io.BytesIO
时,出现错误:
image = Image.open(bytes_image)
Traceback (most recent call last):
File "<ipython-input-472-486e94302154>",line 1,in <module>
image = Image.open(bytes_image)
File "/opt/anaconda3/lib/python3.7/site-packages/PIL/Image.py",line 2862,in open
"cannot identify image file %r" % (filename if filename else fp)
UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f54a9f69050>
有人在重建图像时注意到我可能会丢失的东西吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)