iOS 模仿微信扫描二维码放大功能

我们知道,微信扫描二维码过程中,如果二维码图片焦距比较远,会拉近焦距,实现放大功能。这种效果如何该实现,用原生的API又是如何实现。本文简单尝试如何使用AVFoundation实现放大二维码图片。重点是如何定位二维码和放大二维码,前面介绍了 iOS 扫描二维码实现手势拉近拉远镜头 iOS 识别过程中描绘二维码边框 iOS 识别过程中描绘二维码边框 ,我们可以很简单的实现二维码定位和放大。

- (void)changeVideoScale:(AVMetadataMachineReadableCodeObject *)objc
{
    NSArray *array = objc.corners;
    CGPoint point = CGPointZero;
    int index = 0;
    CFDictionaryRef dict = (__bridge CFDictionaryRef)(array[index++]);
    // 把点转换为不可变字典
    // 把字典转换为点,存在point里,成功返回true 其他false
    CGPointMakeWithDictionaryRepresentation(dict, &point);
    NSLog(@"X:%f -- Y:%f",point.x,point.y);
    CGPoint point2 = CGPointZero;
    CGPointMakeWithDictionaryRepresentation((__bridge CFDictionaryRef)array[2], &point2);
    NSLog(@"X:%f -- Y:%f",point2.x,point2.y);
    CGFloat scace =150/(point2.x-point.x); //当二维码图片宽小于150,进行放大
    if (scace > 1) {

        [self setVideoScale:scace];
    }
    return;
}

上面代码实现检测二维码边长小于150时,进行放大。具体可以根据需求设置,并实现二维码位置的调整。Git Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值