前言
微信提供图片长按识别二维码跳转的功能,但是发现有时候在iPhone下并不是所有图都可以出现识别二维码。但是在Android的设备下可识别,这里究竟是什么原因呢?
识别方式
微信 6.7.3
Android
取整张图片分析,有二维码即可识别。
iOS
1 2 3 4 5 6 |
// img 图片 // screen 设备屏幕 if (img.height/img.width > screen.height/screen.width * 2 || img.width/img.height > screen.height/screen.width * 2 ) { console.log('取截屏分析') } |
当图片的宽高或高宽比例超过竖屏2倍,采用的方案是截取当前屏幕分析,两端策略不一致。
所以当长图超过一定比例,二维码没在屏幕可视区域时,不会出现识别二维码。
测试图
图片尺寸:500*2170(比例为4.34)
测试机型:iPhone x
iPhone设备尺寸详情
计算结果:为达到直接识别二维码的效果,不同设备的最大比例如下
机型 | 最大比例 |
---|---|
iPhone XS Max | 4.33 |
iPhone X | 4.33 |
iPhone 8P | 3.56 |
iPhone 8 | 3.56 |
iPhone SE | 3.55 |
得出结论,iPhone下图片最大比例不大于3.55均可长按识别。