想方便快捷就用第三方的,常见的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