python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)
python微信支付接口
Python提取支付宝和微信支付二维码的示例代码支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码:
有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需要一定成本。本文将教你使用 python 的图像处理库 pillow,轻松批量提取图片中间的方形二维码部分。
提取思路
以微信支付收款码图片为例:
分析图片我们可以看到,二维码位于白色背景中,而白色背景又位于绿色背景上。我们以图片左上角为坐标原点,横向为 x 轴(向右为正方向),纵向为 y 轴(向下为正方向)。我们的目标是需要确定白色背景部分 4 个角的坐标。
从图片左边正中向右横向穿过,当背景色从绿色变为白色时,该点所在位置的横坐标即为左上角和左下角的横坐标,记为 x_left。
同理从图片右边正中向左横向穿过,当背景色从绿色变为白色时,该点所在位置的横坐标即为右上角和右下角的横坐标,记为 x_right。
则白色背景宽度和高度为 h = x_right - x_left。
再从绿色背景转为白色背景时的点向上(或者向下,此处以向上为例)出发,当背景色从白色又变为绿色时,该点所在位置的纵坐标即为左上角和右上角的纵坐标,记为 y_top。
则可以计算出左下角和右下角的纵坐标为 (y_top + h)。
由此,白色背景部分 4 个角的坐标均确定,分别为(从左上角开始顺时针):(x_left, y_top)、(x_right, y_top)、(x_right, y_top+h)、(x_left, y_top+h)。
代码实现
有了上述思路,我们就可以轻松写出 python 脚本了。代码中给出了详细注释,其基本思路就是导入图片,将其转为一个二维矩阵,矩阵的元素为图片对应像素点的 rgba 值,然后根据 rgba 值的变化(即颜色的变化)确定待裁剪边界即可。
|
import glob from pil import image if __name__ = = '__main__' : filenames = glob.glob( '*.jpg" alt="python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)" border="0" /> filenames.extend(glob.glob( '*.jpg" alt="python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)" border="0" /> for filename in filenames: with image. open (filename) as img: img.convert( 'rgba' ) pix_data = img.load() # 图片左上角为原点,横向为 x 轴(向右为正方向),纵向为 y 轴(向下为正方向) width, height = img.size # 图片宽和高 mid_height = height / / 2 # 图片正中纵坐标 # 确定左边界横坐标: x_left = 0 for x in range (width): rgba = pix_data[x, mid_height] if rgba[: 3 ] = = ( 255 , 255 , 255 ): x_left = x break # 确定右边界横坐标: x_right = width - 1 # 右边界 for x in range (width - 1 , 0 , - 1 ): rgba = pix_data[x, mid_height] if rgba[: 3 ] = = ( 255 , 255 , 255 ): x_right = x break h = x_right - x_left # 白色背景高度(正方形) mid_height_rgba = pix_data[x_left, mid_height] if filename.endswith( '.jpg" alt="python微信支付接口(Python提取支付宝和微信支付二维码的示例代码)" border="0" /> # 微信支付往下确定下边界纵坐标,因为当设置了收款金额时,金额显示在上方 y_bottom = mid_height for y in range (mid_height, height): rgba = pix_data[x_left, y] if rgba ! = mid_height_rgba: y_bottom = y break box = (x_left, y_bottom - h, x_right, y_bottom) else : # 支付宝往上确定上边界纵坐标,因为当设置了收款金额时,金额显示在下方 y_top = mid_height for y in range (mid_height, 0 , - 1 ): rgba = pix_data[x_left, y] if rgba ! = mid_height_rgba: y_top = y break box = (x_left, y_top, x_right, y_top + h) crop = img.crop(box) # box 参数为四元组,分别为左上角和右下角的横纵坐标 crop.save( './result/{}' . format (filename)) |
脚本代码同时上传在 github,使用方法请看 readme 文档即可。脚本源码仓库:clip-pay-pic
原文链接:https://www.zmrenwu.com/post/86/
- h5页面强制关注微信公众号(Html5页面获取微信公众号的openid的方法)
- python发送微信消息脚本(python实现给微信指定好友定时发送消息)
- php微信支付怎么做(ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解)
- 微信小程序获取时间(微信小程序wxs日期时间处理的实现示例)
- thinkphp怎么整合微信支付(ThinkPHP框架实现的微信支付接口开发完整示例)
- 微信小程序计数器代码(微信小程序实现计算器案例)
- 微信小程序如何请求服务器数据(微信小程序学习笔记之页面配置与路由方式)
- 微信小程序ui聊天窗口(微信小程序实现简单聊天室)
- php服务号openid(php获取微信openid方法总结)
- python微信自动化(python微信撤回监测代码)
- css代码大全登录界面(Div+CSS仿微信公众平台登录页面)
- 微信小程序左右翻页效果(微信小程序实现九宫格效果)
- python企业微信录信息(python获取微信企业号打卡数据并生成windows计划任务)
- 微信小程序日期选择器有星期天(微信小程序 滚动选择器时间日期详解及实例代码)
- 微信小程序签名怎么操作(微信小程序实现简单手写签名组件的方法实例)
- 微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
- 三部冷门谍战剧,第一部2014年拍摄,至今还未播出(三部冷门谍战剧)
- 《金陵秘事》的剧情跌宕起伏 给观众带来的怎样的感官体验(金陵秘事的剧情跌宕起伏)
- 少儿口才表达影响未来一生,50首经典绕口令和孩子玩出聪明大脑(少儿口才表达影响未来一生)
热门推荐
- python 游戏开发实例(python实现诗歌游戏类继承)
- CentOS 7下安装配置proftpd搭建ftp服务器的详细教程(CentOS 7下安装配置proftpd搭建ftp服务器的详细教程)
- dedecms可以长期使用吗(dedecms5.7 文章不能发布问题探讨及解决方法)
- mysql拆分字符串(MySQL 字符串拆分操作含分隔符的字符串截取)
- 织梦dedecms网站后台数据(DEDECMS织梦系统的会员调用方法详细介绍)
- php服务号openid(php获取微信openid方法总结)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- sql server 过期激活(SQL Server评估期已过问题的解决方法)
- thinkphp5设计权限(Thinkphp5.0 框架视图view的比较标签用法分析)
- SqlServer数据库中文乱码问题解决方法(SqlServer数据库中文乱码问题解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9