您的位置:首页 > 移动开发 > IOS开发

zxing扫描条形码 ios

2013-04-02 14:49 316 查看
在ios中使用zxing扫描条形码:
1.在- (IBAction)scanPressed:(id)sender方法中:
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:YES];
MultiFormatOneDReader *OneReaders=[[MultiFormatOneDReader alloc]init];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:OneReaders,qrcodeReader,nil];

[qrcodeReader release];

[OneReaders release];

2.在ZXingWidgetController.m的 (void)captureOutput:(AVCaptureOutput *)captureOutput :方法中,注释掉以下方法
if (oneDMode) {
// let's just give the decoder a vertical band right above the red line
cropRect.origin.x = cropRect.origin.x + (cropRect.size.width / 2) - (ONE_D_BAND_HEIGHT + 1);
cropRect.size.width = ONE_D_BAND_HEIGHT;

// do a rotate
CGImageRef croppedImg = CGImageCreateWithImageInRect(capture, cropRect);
capture = [self CGImageRotated90:croppedImg];
capture = [self CGImageRotated180:capture];
CGImageRelease(croppedImg);
cropRect.origin.x = 0.0;
cropRect.origin.y = 0.0;
cropRect.size.width = CGImageGetWidth(capture); cropRect.size.height = CGImageGetHeight(capture); }
4、将以下的代码替换:
UIImage *scrn = [[UIImage alloc] initWithCGImage:newImage];
改为:
int backCameraImageOrientation = UIImageOrientationRight;
UIImage *scrn = [[UIImage alloc] initWithCGImage:newImage scale:
(CGFloat)1.0 orientation:backCameraImageOrientation];
5、在OverlayView.m注释代码以下代码:
self.oneDMode = isOneDModeEnabled;
SCANNER for Portrait mode更多了解,参考一下文档:http://groups.google.com/group/zxing/browse_thread/thread/cfe2324e8baf2aaa
 参考:http://code.google.com/p/zxing/issues/detail?id=571
PS:谁如果已经解决了5.0用zxing扫描条形码的问题,弄出来给大家看下
http://shopsavvy.mobi/developers/  扫描库,没用过不知道效果如何
注,如果是itouch的话,可能会因为分辨率低的问题(以前一直因为是5.0的系统影响),不能解码,我以前为这个事情纠结了好长时间,刚刚买了iphone,是5.0的系统一切正常。
转载地址:http://blog.sina.com.cn/s/blog_6dae58b30100xz7e.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: