美文网首页
mongoengine fileField图片操作

mongoengine fileField图片操作

作者: dd1991 | 来源:发表于2022-02-23 19:15 被阅读0次

    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图片操作

          本文链接:https://www.haomeiwen.com/subject/xwxalrtx.html