如何使用python和枕头将图像存储在mongodb文档中?

时间:2016-02-07 10:49:41

标签: mongodb pymongo pillow

我有以下代码,用于创建从请求到网址的缩略图:

r = requests.get(image_url, stream=True, headers=headers)
size = 500, 500
img = Image.open(r.raw)
thumb = ImageOps.fit(img, size, Image.ANTIALIAS)

此时我想将图像存储在mongo文档中,如下所示:

photo = {
    'thumbnail': img,
    'source': source,
    'tags': tags,
    'creationDate': datetime.now(),
}

显然这样做不会有效,所以在我做这件事之前需要应用什么样的转换?

1 个答案:

答案 0 :(得分:0)

好的,这是我对此的看法(我不确定它会起作用;有些想法来自here)。

我认为你可以在pymongo库中使用Binary BSON类型来实现你所需要的。尝试以二进制形式加载图像。假设使用PILLOW(pil.image)或

image_file = open('1.bmp', 'rb')

image_file = StringIO(open("test.jpg",'rb').read())

然后将其发送到pymongo中的二进制(image_file)类型

Binary_image_file = Binary(image_file) #pymongo libary

然后在mongo中进行正常插入。

阅读。做一个正常的find()。然后从key加载值并将存储的数据转换为image:

image_data = StringIO.StringIO(Stringio_image_file)
image = Image.open(image_data)

我希望有所帮助。 (你也可以选择Aydin base64命题)。

一切顺利。