django用requests从url获取图片(数据类型是bytes)后如何在前端中显示出来

28 篇文章 0 订阅
26 篇文章 1 订阅

一、需求:最近做公司项目需要从Graphite拿到cpu状态折线图,用vue显示到前端,django用requests从url获取图片后开始做法是先存到环境/opt/data/graphite/下,然后在写一个获取图片的url显示到前端,这样做麻烦不说,还会引起一些问题(定时清理问题,多用户访问问题,静态文件写权限问题)。
二、解决办法:直接把返回到前端展示,response.content拿到图片字节进行base64编码, 然后就可以渲染到页面上去。

    images =  requests.get(graphite_url)
    logger.info("images: %s"%images)
    print("images: %s"%images)
    if images.status_code == 200:
        img = images.content
        image_url = base64.b64encode(img)

经过base64编码的图片在html的标签显示时,需要添加一些属性,即下面的data:image/jpeg;base64。

<div class="cpu_img"><img :src=cpu_src_img></img></div>

cpu_src_img是从后端拿到的经过封装的解码值:

          if(res.success==1){
            this.cpu_src_img = "data:image/gif;base64,"+res.data
            console.log("cpu_src_img="+this.cpu_src_img)
          }

res.data得到的是后端传过来的base64编码值,拼接上"data:image/gif;base64,"就行了。
参考:【前端攻略】:玩转图片Base64编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值