Rah*_*Dev 8 binary opencv mongodb pymongo python-3.x
from PIL import Image
from bson import Binary
img = Image.open('test.jpg')
img = Binary(img)
Run Code Online (Sandbox Code Playgroud)
抛出一个错误说明TypeError : data must be an instance of bytes
为什么会出现这种情况?如何解决这个问题以将 img 存储到 MongoDB?
小智 12
只要文档不超过16MB标准bson就可以,否则应该使用gridfs。下面的示例展示了如何插入图像以及如何从 mongodb 读回图像。
插入图像.py
from pymongo import MongoClient
from PIL import Image
import io
client = MongoClient()
db = client.testdb
images = db.images
im = Image.open("./image.jpg")
image_bytes = io.BytesIO()
im.save(image_bytes, format='JPEG')
image = {
'data': image_bytes.getvalue()
}
image_id = images.insert_one(image).inserted_id
Run Code Online (Sandbox Code Playgroud)
读取图像.py
from pymongo import MongoClient
from bson.binary import Binary
from PIL import Image
import io
import matplotlib.pyplot as plt
client = MongoClient()
db = client.testdb
images = db.images
image = images.find_one()
pil_img = Image.open(io.BytesIO(image['data']))
plt.imshow(pil_img)
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13523 次 |
| 最近记录: |