[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来
2014-06-24 15:52
567 查看
今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题。
我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染。因为requests.get(url)得到的response.content是bytes, 无法像jpg等本地图片文件直接加到<img src="">中,
我的代码是这样的:
Html代码是这样的register.html
百思不得其解,上网也没有查阅到相关的信息。
最后求助了django方面很牛逼的一个学长, 他告诉我要对response.content进行base64编码, 然后就可以渲染到页面上去。加入了base64编码之后,可是图片依然显示不出来
想到是否是在html页面中的代码不对, 之后在网上查阅信息才得知, 经过base64编码的图片在html的<img>标签显示时,需要添加一些属性,即下面的data:image/jpeg;base64。 感谢博文:在浏览器中使用Base64编码的图像
终于可以显示了。
我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染。因为requests.get(url)得到的response.content是bytes, 无法像jpg等本地图片文件直接加到<img src="">中,
我的代码是这样的:
def get_captcha(request): CAPTCHA_URL = "http://jw.qdu.edu.cn/academic/getCaptcha.do" session = requests.session() image = session.get(CAPTCHA_URL) request.session['JSESSIONID'] = session.cookies['JSESSIONID'] print type(image.content) return image.content def register(request): if request.method == "GET": captcha = get_captcha(request) return render(request, 'student/register.html', {'captcha': captcha})
Html代码是这样的register.html
<input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码"> <img src="{{ captcha }}" />
百思不得其解,上网也没有查阅到相关的信息。
最后求助了django方面很牛逼的一个学长, 他告诉我要对response.content进行base64编码, 然后就可以渲染到页面上去。加入了base64编码之后,可是图片依然显示不出来
def register(request): if request.method == "GET": captcha = get_captcha(request) captcha = b64encode(captcha) return render(request, 'student/register.html', {'captcha': captcha})
想到是否是在html页面中的代码不对, 之后在网上查阅信息才得知, 经过base64编码的图片在html的<img>标签显示时,需要添加一些属性,即下面的data:image/jpeg;base64。 感谢博文:在浏览器中使用Base64编码的图像
<input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码"> <img src="data:image/jpeg;base64,{{ captcha }}" />
终于可以显示了。
相关文章推荐
- 如何从数据库中获取image类型的数据,并把它显示出来
- 基于Bmob平台进行从服务器获取图片数据(url)的操作,并以瀑布流得形式显示图片
- 如何处理BLOB类型数据之三:使用Servlet在页面上显示BLOB中的图片
- 获取sd卡中的图片URL并显示,同时使用ImageView把选择的图片展现出来
- 如何让前端获取到硬盘上的图片并显示出来,不是项目中保存的图片
- javascript开发中如何使用face++,得到人脸数据(如何简单获取图片url,如何获取完整的人脸信息)
- 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!
- 如何将record中的Date数据获取出来,在Datefield中显示
- C#如何从数据库里读取iamge类型的数据,让其显示在pictureBox里(整理)
- 如何在数据窗口中显示图片
- Flex中如何用getItemAt事件和数组访问操作符[]从ArrayCollection中获取数据显示的例子
- 从二进制数据流获取图片数据,在页面中显示图片(MVC,NHibernate)
- 子线程如何获取和设置 或者控制窗口实时显示数据(网上的资料经个人整理拼凑总结)
- 如何把获取的gps数据转换成google地图上显示的坐标
- [VB.NET]如何把一个图片保存到access中,又如何把它读取出来,并在picturebox中显示?
- 如何获取指定表的列和数据类型
- 保存在数据中image字段的图片文件显示出来
- 老大要求把Word文档加上公司的标识,公司名文字或者logo图片都可以,但要求是用电脑打开(电子文档时)能看见标识,如果打印出来(纸质文档)就不显示出来,如何实现?
- 如何抽取前30的数据汇总项目,剩余的加和列为其他(99),在RDLC报表上作为饼图显示出来
- 如何把存储在数据库中的图片根据自己的需要的大小显示出来。【转】