显示存储在 MongoDB 中的 PNG 二进制图像
Display image of PNG binary that is stored in MongoDB
我有一个 mongodb 集合,看起来像这样:
{
u'_id': u'someid',
u'files': {u'screenshot': Binary('\x89PNG\r\n\x1a\n\...', 0)}
}
截图是二进制格式,我想展示一下。
我将如何在 python 中执行此操作?
我已经使用 pymongo 建立了与数据库的连接,但我不知道如何解码字节流。请记住,我没有创建此数据库,我只能访问它。
有人可能会用 Pillow
import sys
from cStringIO import StringIO
from bson.binary import Binary
from pymongo import MongoClient
from PIL import Image
data = open(sys.argv[1], 'rb').read()
client = MongoClient()
db = client.so
db['images'].remove()
db['images'].insert({'id': 1, 'img': Binary(data)})
for rec in db['images'].find():
im = Image.open(StringIO(rec['img']))
im.show()
此脚本将 PNG 文件作为其第一个参数,将其二进制表示形式插入 Mongo 集合,检索此二进制表示形式并最终显示图形
有人回答了问题然后删了他的回答,我不知道他为什么删了因为它对我有帮助。以下两行是他的贡献:
with open('output.png', 'wb') as f:
f.write(item[u'files'][u'screenshot'])
然后我用Tkinter显示图片:
from Tkinter import *
root = Tk()
topFrame = Frame(root)
topFrame.pack()
screenshot = PhotoImage(file="output.png")
label_screenshot = Label(topFrame, image=screenshot)
label_screenshot.pack()
root.mainloop()
我有一个 mongodb 集合,看起来像这样:
{
u'_id': u'someid',
u'files': {u'screenshot': Binary('\x89PNG\r\n\x1a\n\...', 0)}
}
截图是二进制格式,我想展示一下。 我将如何在 python 中执行此操作?
我已经使用 pymongo 建立了与数据库的连接,但我不知道如何解码字节流。请记住,我没有创建此数据库,我只能访问它。
有人可能会用 Pillow
import sys
from cStringIO import StringIO
from bson.binary import Binary
from pymongo import MongoClient
from PIL import Image
data = open(sys.argv[1], 'rb').read()
client = MongoClient()
db = client.so
db['images'].remove()
db['images'].insert({'id': 1, 'img': Binary(data)})
for rec in db['images'].find():
im = Image.open(StringIO(rec['img']))
im.show()
此脚本将 PNG 文件作为其第一个参数,将其二进制表示形式插入 Mongo 集合,检索此二进制表示形式并最终显示图形
有人回答了问题然后删了他的回答,我不知道他为什么删了因为它对我有帮助。以下两行是他的贡献:
with open('output.png', 'wb') as f:
f.write(item[u'files'][u'screenshot'])
然后我用Tkinter显示图片:
from Tkinter import *
root = Tk()
topFrame = Frame(root)
topFrame.pack()
screenshot = PhotoImage(file="output.png")
label_screenshot = Label(topFrame, image=screenshot)
label_screenshot.pack()
root.mainloop()