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)#写入指定位置,生成图片


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容