前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Web Function】实践:Python搭建轻量级二维码解析服务

【Web Function】实践:Python搭建轻量级二维码解析服务

原创
作者头像
薛定喵君
修改2021-07-29 10:52:19
6690
修改2021-07-29 10:52:19
举报
文章被收录于专栏:薛定喵君

前言

在平时的工作学习中,我们有时会遇到解析二维码内容的需求,碰到这种比较好玩的需求当然要用有意思的产品去实现了,刚好腾讯云推出了 web function 这种结合了 serverless 与 web 服务能力的产品,自然要去体验一番了。

本次就记录一下如何使用 Python web function 来实现一个简易二维码解析服务。

实现思路

本次实验目的是希望 web function 可以接收一个二维码图片的网络地址,然后下载下来进行解析并将解析后的结果返回出去。

这里主要借助Python的zxing这个库来做这个核心的解析功能。

话不多说,程序的功能还是比较简单的,下面是参考代码:

代码语言:txt
复制
import json
import zxing
import requests
import os
import time
from flask import Flask
from flask import request

now = 'file'+str(time.time())
app = Flask(__name__)

@app.route('/')
def main():
    imgurl=request.args.get("url")
    if imgurl is None:
        # 默认图片
        imgurl=http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png'
 
    def download_img(img_url):
        r = requests.get(img_url, headers={}, stream=True)
        ctype = r.headers['Content-Type']
        global fileName
        fileName = now
        if ctype.find('image') == -1:
            return False
        ctype = ctype[ctype.find('/')+1:]
        typeDict = {
            "jpeg": "jpeg",
            "jpg": "jpg",
            "png": "png",
            "bmp": "bmp",
            "gif": "gif"
        }
        global ext
        ext = typeDict.get(ctype, 'png')
        if r.status_code == 200:
            open(os.getcwd() + '/baseimg-' + fileName + '.' + ext, 'wb').write(r.content) 
            return True
        del r

    # 下载的二维码图片
    ok = download_img(imgurl)
    save_name = os.getcwd() + '/baseimg-' + fileName + '.' + ext

    if ok:
        reader = zxing.BarCodeReader()
        barcode = reader.decode(save_name)
        return(barcode.parsed)

if __name__ == '__main__':
   app.run(host='0.0.0.0',port=9000)

web 函数创建

本地开发

代码可以参考上方示例,这里我们发现官方文档上面说Python 3 云端运行时已经支持了一些库但是本次函数需要的并没包含,所以需要我们自己安装依赖库。

Python 运行时支持依赖打包上传及在线IDE安装两种依赖库安装方法,这里选择了本地将依赖安装好再进行打包上传。

函数创建

登录 Serverless 控制台,单击左侧导航栏的「函数服务」,选择自定义创建函数。

image.png
image.png

函数类型选择「Web函数」就好了,地域随便选一个,部署方式使用代码部署,运行环境为Python 3.6。

image.png
image.png

接着函数代码我们使用本地上传zip包即可。

image.png
image.png
函数测试

上传完成之后可能会有一些 bug,我们只需要在 cloud studio 中在线调试即可。

web 函数访问

测试好了之后如何进行访问呢,web函数可以直接通过网址触发,我们只要把生成的访问地址直接打开就好了。

image.png
image.png

部署之后就可以得到一个访问地址,通过这个地址我们就可以使用刚才的 web function 提供的服务了。

示例服务地址:

https://service-rw82mcg7-1256464567.sh.apigw.tencentcs.com/release/

测试二维码图片地址:

http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png

体验感受

整体使用过程还是比较顺畅的,本地开发的代码不需要怎么改造就可以上传上去直接使用,除了文档方面资料相对少些,其它都还是比较方便的。

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 实现思路
  • web 函数创建
    • 本地开发
      • 函数创建
        • 函数测试
        • web 函数访问
        • 体验感受
        • 参考资料
        相关产品与服务
        云 API
        云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档