python-사진 흐름 전송의 사고방식 및 예시 (url 변환 QR코드)
1. 장면
반환 URL_name, (a 태그, src 정적 루트 접근)
2. 흐름 전송, 전면 렌더링
바이너리 흐름은 전단으로 돌아가고, 전단은 바이너리 흐름 인코딩 유형에 따라 표시된다
3. 전단 js 생성
백그라운드에서 위챗페이로 가져온code_url, 프런트엔드 js장code_url QR 코드 생성 및 렌더링
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 변환 QR코드)의 상세한 내용입니다. 더 많은python 사진 흐름 전송에 관한 자료는 저희 다른 관련 글에 주목하세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.