python-图片流传输的思路及示例(url转换二维码)
更新时间:2020年12月21日 20:10 点击:1344
1.场景
- 将URL动态生成二维码前端展示(微信支付等,)--》
1.静态文件路径访问
返回URL_name,(a标签,src 静态路由访问)
2.流传输,前端渲染
二进制流返回前端,前端根据二进制流编码类型显示
3.前端js生成
后台获取到微信支付的code_url,前端js将code_url生成二维码,并渲染
- 实际代码
使用python_web 框架--》tornado
manager.py
import os import asyncio import tornado.ioloop import tornado.httpserver import tornado.web import tornado.options from tornado.options import define, options, parse_command_line from apps import UrlHandler, Url2Handler, Url3Handler define("port", default=8000, type=int) def create_app(): settings = { "template_path": os.path.join(os.path.dirname(__file__), "templates"), "static_path": os.path.join(os.path.dirname(__file__), "static"), } application = tornado.web.Application( handlers=[ (r"/url", UrlHandler), (r"/url2", Url2Handler), (r"/url3", Url3Handler), ], debug=True, **settings, ) return application if __name__ == '__main__': parse_command_line() app = create_app() server = tornado.httpserver.HTTPServer(app) server.listen(options.port) asyncio.get_event_loop().run_forever()
apps.py
import tornado.web from manager_handler import gen_qrcode, gen_qrcode_obj,gen_qrcode_buf class BaseHandler(tornado.web.RequestHandler): pass class UrlHandler(BaseHandler): def get(self): # 获取链接 self.render('qrcode.html', title='url', data='URL-提交', img_stream='') async def post(self): # 生成二维码 url = self.get_argument('url_str') # URL转换二维码 img_stream = gen_qrcode(url) await self.render('qrcode.html', title='qrcode', data='扫码支付', img_stream=img_stream) class Url2Handler(BaseHandler): def get(self): # 获取链接 self.render('qrcode.html', title='url', data='URL-提交', img_stream='') async def post(self): # 生成二维码 url = self.get_argument('url_str') # URL转换二维码 img_stream = gen_qrcode_obj(url=url) # await self.render('qrcode.html', title='qrcode', data='扫码支付', img_stream=img_stream) self.set_header('Content_Type', 'image/jpg') self.set_header('Content_length', len(img_stream)) self.write(img_stream) class Url3Handler(BaseHandelr): def get(self): self.render('qrcode.html', title='url', data='URL-提交', img_stream='') def post(self): url = self.get_argument('url') img_stream = gen_qrcode_buf(url) self.set_header('Content-Type', 'image/png') self.write(img_stream)
manager_handler.py
import qrcode import io import base64 import time def gen_qrcode(url): """ 方式1: URL转换二维码 :param url: 转换二维码的URL :return: base64编码后的 二进制流 二维码数据 """ qr = qrcode.make(url) buf = io.BytesIO() qr.save(buf) img_buf = buf.getvalue() img_stream = base64.b64encode(img_buf) return img_stream def gen_qrcode_obj(version=1, box_size=10, border=4, url=None): """ 方式2: URL转换二维码(图片流传输, template需要指明 data:base64编码) :param version: :param box_size: :param border: :return: """ qr = qrcode.QRCode( version=version, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=box_size, border=border, ) url = "https://www.12dms.com" if url is None else url save_name = "./" + "qrcode" + str(time.time()) + ".png" qr.add_data(url) qr.make() img = qr.make_image() img.save(save_name.encode()) with open(save_name, 'rb') as img_f: img_stream = img_f.read() img_stream = base64.b64encode(img_stream) print(img_stream) return img_stream def gen_qrcode_buf(words): qr = qrcode.make(words) buf = io.BytesIO() qr.save(buf, 'png') qr_buf = buf.getvalue() # img_stream = base64.b64encode(qr_buf) return qr_buf
base.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}{% end %}</title> {% block head %}{% end %} </head> <body> <h1 style="text-align: center"> {% block h1 %}{{ data }}{% end %} </h1> {% block content %}{% end %} </body> </html>
qrcode.html
{% extends "base.html" %} {% block title %} {{ title }} {% end %} {% block h1 %} {{ data }} {% end %} {% block content %} <form method="post" action="" > <p> 输入待转换的URL:<input name="url_str"/> <br> {# {{ img_stream }}#} {% if img_stream %} <img style="width:180px" src="data:;base64,{{ img_stream }}" alt=""> {% end %} </p> <br> <input id="submit" type="submit" value="生成二维码"> </form> {% end %}
以上就是python-图片流传输的思路及示例(url转换二维码)的详细内容,更多关于python 图片流传输的资料请关注猪先飞其它相关文章!
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
- 这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
Python getsizeof()和getsize()区分详解
这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
- 这篇文章主要介绍了解决python 两个时间戳相减出现结果错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-12
- 这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
- 这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
- 这篇文章主要介绍了Python绘制的爱心树与表白代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-06