在平时的工作学习中,我们有时会遇到解析二维码内容的需求,碰到这种比较好玩的需求当然要用有意思的产品去实现了,刚好腾讯云推出了 Web Function 这种结合了 Serverless 与 Web 服务能力的产品,自然要去体验一番了。
本次就记录一下如何使用 Python Web Function 来实现一个简易二维码解析服务。
本次实验目的是希望 Web Function 可以接收一个二维码图片的网络地址,然后下载下来进行解析并将解析后的结果返回出去。这里主要借助 Python 的 zxing 这个库来做这个核心的解析功能。话不多说,程序的功能还是比较简单的,下面是参考代码:
import jsonimport zxingimport requestsimport osimport time
now = 'file'+str(time.time())
def main(event, context):
# 默认图片 imgurl='http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png' params = json.dumps(event,sort_keys=True,indent=4) param = json.loads(params) if 'queryStringParameters' in param.keys(): param = param['queryStringParameters']
if 'pic' in param.keys(): imgurl = param['url'] 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 { "isBase64Encoded": False, "statusCode": 200, "headers": {'Content-Type': 'application/json'}, "body": barcode.parsed }
代码可以参考上方示例,这里我们发现官方文档上面说 Python 3 云端运行时已经支持了一些库但是本次函数需要的并没包含,所以需要我们自己安装依赖库。
Python 运行时支持依赖打包上传及在线 IDE 安装两种依赖库安装方法,这里选择了本地将依赖安装好再进行打包上传。
登录 Serverless 云函数控制台,单击左侧导航栏的「函数服务」,选择自定义创建函数。
函数类型选择「事件函数」就好了,地域随便选一个,部署方式使用代码部署,运行环境为Python 3.6。
接着函数代码我们使用本地上传 zip 包即可。
上传完成之后可能会有一些 bug,我们只需要在 cloud studio 中在线调试即可。
测试好了之后如何进行访问呢,我们需要在函数的触发管理里面创建一个触发器,触发方式可以选择「网关触发」。
提交之后就可以得到一个访问地址,通过这个地址我们就可以使用刚才的 Web Function 提供的服务了。
https://service-rw82mcg7-1256464567.sh.apigw.tencentcs.com/release/decode
http://cdn.xuedingmiao.com/qrcode_xuedingmiao.com.png
整体使用过程还是比较顺畅的,本地开发的代码不需要怎么改造就可以上传上去直接使用,除了文档方面资料相对少些,其它都还是比较方便的。
参考资料
Web Function 体验官召集令!
惊喜福利满满
(点击下图 ? 查看详情)
Web Function 使用体验
(请在 PC 端访问)
当前已在国内各大区域发布上线,欢迎体验使用!
推荐阅读
One More Thing
欢迎进入千人 QQ 群 (871445853) 交流 Serverless!
点击「阅读原文」,了解更多 Web Function 产品详情。
本文分享自 ServerlessCloudNative 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!