识别二维码图片

今天做项目的时候需要添加一个根据识别二维码图片,以下就是实现的步骤以及相关代码:

1.在选择相册图片响应的代理事件(- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info)获取图片,并将其转换成NSData。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
    if ([type isEqualToString:@"public.image"]) {
        UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        NSData *imageData = UIImagePNGRepresentation(image);
        //imgView.image = image;
        [picker dismissViewControllerAnimated:YES completion:nil];
        [self readQRCodeFromImageWithFileURL:imageData];
    }
}

2.iOS8以后可以直接使用 CIQRCodeFeature进行解析,代码如下:

- (void)readQRCodeFromImageWithFileURL:(NSData *) data {
    CIImage *image = [CIImage imageWithData:data];
    //CIImage *image = [CIImage imageWithContentsOfURL:url];// 也可以根据URL找到CIImage
    if (image){
        //创建CIDetector
        CIDetector *qrDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode
                                                    context:[CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]
                                                    options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];
        NSArray *features = [qrDetector featuresInImage:image];
        if ([features count] > 0){
            for (CIFeature *feature in features){
                if (![feature isKindOfClass:[CIQRCodeFeature class]]){
                    continue;
                }
                CIQRCodeFeature *qrFeature = (CIQRCodeFeature *)feature;
                NSString *content = qrFeature.messageString;//解析的数据
                NSLog(@"content is :%@",content);
            }
        }
    }
    [self.extensionContext completeRequestReturningItems:nil
                                       completionHandler:^(BOOL expired) {
                                           NSLog(@"解析失败");
                                       }];
}


以上就是ios解析二维码图片的方法,以及相关代码,希望对大家有所帮助。

微信小程序实现二维码图片识别有多种方法。 方法一:通过长按识别图片二维码。开发者在小程序中使用`image`组件,设置`show - menu - by - longpress`属性为`true`,启用长按图片显示菜单的功能。当用户长按包含二维码图片时,微信会自动识别二维码并弹出相应的操作菜单 [^2]。 方法二:先点击图片预览,再长按识别。示例代码如下: ```javascript previewImage(e){ var src='';//图片链接 wx.previewImage({ current: src, //链接字符串,默认显示urls第一张 urls: ['',''] // 数组,需要预览的图片列表 }) } ``` 上述代码中的`image.png`为需要识别图片路径。点击图片后进行预览,之后可长按识别 [^3]。 方法三:添加长按事件并调用微信扫码接口。需要注意的是,微信小程序中的扫码功能需要用户授权,因此在使用该功能之前,需要先在`app.json`中添加`"permission"`字段,并在`"permission"`字段中添加扫码功能的权限声明,示例如下: ```json { "permission": { "scope.userLocation": { "desc": "获取您的地理位置以提供更好的服务" }, "scope.address": { "desc": "收货地址" }, "scope.invoiceTitle": { "desc": "发票抬头" }, "scope.invoice": { "desc": "获取发票" }, "scope.werun": { "desc": "微信运动步数" }, "scope.record": { "desc": "麦克风" }, "scope.writePhotosAlbum": { "desc": "保存到相册" }, "scope.camera": { "desc": "拍照" }, "scope.scanCode": { "desc": "扫码" } } } ``` 通过添加长按事件,并调用微信扫码接口,可实现对图片二维码识别功能 [^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值