Abd*_* Pp 5 tornado mongodb python-imaging-library
我正在尝试使用龙卷风和pil和mongodb这样做.
avat = self.request.files['avatar'][0]["body"]
nomfich = self.request.files['avatar'][0]["filename"]
try:
image = Image.open(StringIO.StringIO(buf=avat))
size = image.size
type = image.format
avatar = r"/profile-images/{0}/{1}".format(pseudo, nomfich)
except IOError:
self.redirect("/erreur-im")
Run Code Online (Sandbox Code Playgroud)
和数据库代码:
user={
"pseudo": pseudo,
"password":password,
"email":email,
"tel":tel,
"commune":commune,
"statut":statut,
"nom":nom,
"prenom":prenom,
"daten":daten,
"sexe":sexe,
"avatar":avatar
}
self.db.essog.insert(user)
Run Code Online (Sandbox Code Playgroud)
并且它工作正常,"头像"被保存,但没有图像,它只保存一个名字!
我的问题是:
jdi*_*jdi 17
您不一定需要GridFS来存储MongoDB中的文件,但它确实使它成为一种更好的体验,因为它处理二进制数据的拆分和保存,同时使元数据也可用.然后,您可以将User文档中的ID存储到头像图片中.
除此之外,您还可以将二进制数据直接存储在文档中,但在代码中您不会保存数据.你只是打开它PIL.Image,但随后什么都不做.
假设您正在使用pymongo驱动程序,我认为您可以做的只是将二进制数据包装在Binary容器中,然后存储它.这是我未经测试的,但我认为它应该工作:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Run Code Online (Sandbox Code Playgroud)
现在说...只是让自己更容易并使用GridFS.这就是它的意思.
如果您要使用GridFS,它可能如下所示:
from gridfs import GridFS
avat_ctype = self.request.files['avatar'][0]["content_type"]
fs = GridFS(db)
avatar_id = fs.put(avat, content_type=avat_ctype, filename=nomfich)
user={
...
"avatar_name":avatar,
"avatar_id": avatar_id
...
}
Run Code Online (Sandbox Code Playgroud)
Shi*_*iva 10
这是在不使用gridfs的情况下在mongodb中插入和检索图像的代码.
def insert_image(request):
with open(request.GET["image_name"], "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
print encoded_string
abc=db.database_name.insert({"image":encoded_string})
return HttpResponse("inserted")
def retrieve_image(request):
data = db.database_name.find()
data1 = json.loads(dumps(data))
img = data1[0]
img1 = img['image']
decode=img1.decode()
img_tag = '<img alt="sample" src="data:image/png;base64,{0}">'.format(decode)
return HttpResponse(img_tag)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22828 次 |
| 最近记录: |