iOS扫码的那些事

想方便快捷就用第三方的,常见的zbr,zxing,各有特色吧,都知道微信的扫描比较快,不管自己写的用的原生的还是第三方的都比较慢,微信其也是用zbar,但估计有改过里面的算法。。。ZXing和ZBar 导入的时候需要注意各种兼容,iOS7自带的不需要考虑这些。配置方面还是iOS7自带的方便简单一些。但是iOS7自带的有些弊端,就是扫描条形码不是很给力,遇到弯曲的条形(比如在瓶子上印制的)码就很难扫出来,但是扫描二维码就很给力,瞬间扫描。所以对比之下,我条形码用的是ZXing,二维码用的是iOS7自带。配置的时候要注意焦距,图片质量的配置,这样搭配下来会好很多。但是我现在还有一个问题没有解决,就是对焦速度不快,等对焦速度解决了的话就完美了。现在基本上和微信扫码的速度一样,不考虑对焦速度的话会比微信要快。对于对焦问题这个我还有待去探究,不过建议大家还是用原生的会比较快,值得一提的是原生的不带快门声音,解决办法是自己往里面添加一个系统声音即可,这个声音可以自定义,使用AVCaptureStillImageOutput获取图像有一个问题,就是会有快门声,如果你觉得快门声烦人,那建议采取另外一种方式,AVCaptureVideoDataOutput,视频流的方式进行截取,

     //初始化stillImageOutput = [[AVCaptureStillImageOutput alloc]init];  

NSDictionary* outputSettings = @{AVVideoCodecKey:AVVideoCodecJPEG};  

[stillImageOutput setOutputSettings:outputSettings];  

if ([self.session canAddOutput:stillImageOutput]) 

{  

[self.session addOutput:stillImageOutput];  

}//以下代码在扫描结果方法captureOutput中调用

AVCaptureConnection *myVideoConnection = nil;  

//从 AVCaptureStillImageOutput 中取得正确类型的 AVCaptureConnection  

for (AVCaptureConnection *connection in stillImageOutput.connections

{  

for (AVCaptureInputPort *port in [connection inputPorts])

{  

if ([[port mediaType] isEqual:AVMediaTypeVideo]) 

{  

myVideoConnection = connection;  

break;  

}  

}  

}  

NSString* fileName = @"保存图像的名字";  

//撷取影像(包含拍照音效)  

[stillImageOutput captureStillImageAsynchronouslyFromConnection:myVideoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {  

//完成撷取时的处理程序(Block)  

if (imageDataSampleBuffer)

{  

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];  

NSString* filePath = [NSString stringWithFormat:@"%@/%@.jpg",[iTools getDocumentDirectory],fileName]; //写文件到本地  

}  

}

];


更多详细资料请访问https://github.com/YCM888/miaomaio


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值