mongoengine fileField图片操作

files上传下载

利用mongoengine models fileField实列 进行图片的上传和下载。(使用用IO,PIL类库)

创建models

from mongoengine import * 

classGridPicture(Document):

des=StringField()

pic=FileField()

上传图片

frommodels.modelsimportGridPicture

#创建models实列

gridpic=GridPicture(des="this is a picture")

#将图片转化为字节流

pic_stream=open("1.png","rb")

#上传图片流

gridpic.pic.put(open_pic,content_type='image/png')

gridpic.save()

文档中的 FileField 实际上仅将文件的 ID 存储在单独的 GridFS 集合中。




读取并下载图片
1.mongoengine


#读取图片

pic_queryset=GridPicture.objects().first()

pic_stream=pic_queryset.pic.read()

print(pic_stream)#返回流

#通过字节流转换为图片

importos

fromioimportBytesIO

fromPILimportImage

bytes_stream=BytesIO(pic_stream)# 将bytes结果转化为字节流

roiimg=Image.open(bytes_stream)#读取图片

#roiimg.show()

imgByteArr=BytesIO()# 初始化一个空字节流

roiimg.save(imgByteArr,format('PNG'))# 把我们得图片以‘PNG’保存到空字节流

imgByteArr=imgByteArr.getvalue()# 无视指针,获取全部内容,类型由io流变成bytes。

# dir_name = os.mkdir('imges')

img_name='1.png'

withopen(os.path.join('img',img_name),'wb')asf:

f.write(imgByteArr)#写入指定位置,生成图片

2.pymongo

你可能感兴趣的:(mongoengine fileField图片操作)