想必大家应该都玩过支付宝的AR红包了,一开始我就想着看看能不能搞点有意思的事。昨天晚上,我就尝试抓包的方式,看看能不能抓到这个图片。看这个模糊效果是客户端做的还是服务端做的,和之前抓微信朋友圈红包一样的方式,最后未果,这图片压根不是走的http,于是便罢了。今天又听到有人通过简单处理线索图片,便能扫出红包,于是我也试了下。

原理

1、首先支付宝里点击线索图片截大图,得到一张这样的图片

2、拿iPhone6截图,1335*750示例(其他手机具体坐标可能会有出入),线索图片左上在整个截图的(205,638)坐标,宽度是340。裁剪出来的线索图片。

3、放大来看,可以看到黑色线条占7个像素,图案区域占5个像素。

所以处理办法就是在黑色线条上面的图案区域剪切4个像素高度的区域粘贴在黑色线条的上半部分,再从线条下面的图案区域剪切3个像素的高度粘贴在黑色线条的下半部分。
PS:有一些细节地方通过观察来调参数从而提高准确度,比如第一个团区域的高度在7个像素左右。

4、如此循环所有的线条个数,线条个数应该是27个。
最终得到的处理之后的图片,就是这样的。

虽然有点模糊,但是已经能扫出来。

一晚上开了8-9个红包 😄 准确率不到一半吧,还是有点低。

Just For Fun!

具体实现

https://github.com/JayFang1993/AlipayAR

最新

最新的支付宝好像已经升级模糊的效果,黑色的线条高度不一样了~此方案已经不适用了~😭 期待大家更好的改进方案!