苏彤,你的 Python Flask 编写生成二维码接口写完了

需求背景

本篇博客实战解决一个真是场景,需求描述如下:
为团队其它成员提供一个二维码生成接口,传入文本,返回图片地址,数据存储到 OSS 中。

采用 Python Flask 框架实现,并且使用一个第三方二维码模块,使用下述命令提前安装 qrcode

pip install qrcode 

同时还需要安装一下 pillow,可以使用清华源。

pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple 

入门级代码

直接编写如下代码,运行查看结果,由于博客无法上传二维码,顾不进行展示。

import qrcode qr = qrcode.QRCode( version=3,error_correction=qrcode.constants.ERROR_CORRECT_Q,box_size=10,border=4 ) qr.add_data("https://www.pachong.vip") qr.make(fit=True) img = qr.make_image(fill_color="black",back_color="white") img.show() 

接下来对相关参数进行一下说明。

qrcode.QRCode() 参数清单:

make_image(fill_color=None, back_color=None,image_factory=None) 创建二维码图像并返回,可以使用 fill_color + back_color 添加颜色。

配合 Flask 制作 API

安装并搭建 Flask 框架,然后制作二维码生成接口,详细代码如下所示,其中 OSS 使用阿里云相关值即可。

import qrcode from flask import Flask from io import BytesIO import time import oss2 def upload_qrcode(bytes_content, qrcode_name):  auth = oss2.Auth('AK', 'AS')   bucket = oss2.Bucket(auth, 'oss-cn-beijing.aliyuncs.com', 'Bucket')  bucket.put_object(qrcode_name, bytes_content) app = Flask(__name__) @app.route('/qrcode') def qrcode_func(): create_qrcode() return 'Hello, World!' def create_qrcode(): qr = qrcode.QRCode( version=3, error_correction=qrcode.constants.ERROR_CORRECT_Q, box_size=10, border=4 ) qr.add_data("https://www.pachong.vip") qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white")  img_byte = BytesIO() img.save(img_byte, format='PNG') binary_content = img_byte.getvalue()  upload_qrcode(binary_content) if __name__ == '__main__': app.run(debug=True) 

其中用到了 BytesIO 将图片转换为二进制流,便于直接上传到 oss 中,后续逻辑只需要在 Flask 中配置返回拼接的地址即可。

file_name = create_qrcode() domain = "https://cdn.pachong.vip/qr/" if file_name: data = { "src": domain + file_name, "code": 200 } else: data = { "src": "", "code": 500 } response = json.dumps(data) return response, 200, {"Content-Type": "application/json"} 

此时在通过浏览器访问,会得到一个 JSON 字符串,其中 src 就是拼接的 URL,code 是响应状态码。

{ "src": "https://cdn.pachong.vip/qr/1658397523.png", "code": 200 } 

接下来给 Flask 加上一个 ULR 参数,二维码基于传入的 URL 生成,修改 qrcode_func() 函数,在其中增加参数获取逻辑。

url = request.args.get("url", None)  if url is None: return json.dumps({"msg": "缺少url", "src": "", "code": 500}), 200, {"Content-Type": "application/json"} 

逻辑实现完毕之后,就可以上传 CentOS 系统进行部署了。

此时一个完整的 Python Flask 生成二维码项目就已经完成了~

原文链接:https://blog.csdn.net/hihell/article/details/125916135?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934461816782390515850%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934461816782390515850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-21-125916135-null-null.nonecase&utm_term=%E6%90%AD%E5%BB%BAcdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6919

(0)
上一篇 2022年8月31日
下一篇 2022年8月31日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml