修改ZXing,使之支持条形码识别


1.在- (IBAction)scanPressed:(id)sender方法中:
ZXingWidgetController *widController = [[ZXingWidgetControlleralloc] initWithDelegate:selfshowCancel:YESOneDMode:YES];

MultiFormatOneDReader *OneReaders=[[MultiFormatOneDReaderalloc]init]; QRCodeReader* qrcodeReader = [[QRCodeReaderalloc] 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];

    //              UIImageWriteToSavedPhotosAlbum([UIImage imageWithCGImage:capture], nil, nil, nil);

    CGImageRelease(croppedImg);

    cropRect.origin.x = 0.0;

    cropRect.origin.y = 0.0;

    cropRect.size.width = CGImageGetWidth(capture);

    cropRect.size.height = CGImageGetHeight(capture);

  }

 
3. 将上面注释掉的代码向下数大概约20行处的代码:
UIImage *scrn = [[UIImage alloc] initWithCGImage:newImage]; 
改为:
int backCameraImageOrientation = UIImageOrientationRight; 
UIImage *scrn = [[UIImage alloc] initWithCGImage:newImage scale: 
(CGFloat)1.0 orientation:backCameraImageOrientation];

4. 在OverlayView.m注释代码以下代码:

self.oneDMode = isOneDModeEnabled;
 
然后运行,OK。
 
posted @ 2013-04-30 17:45  xrange  阅读(516)  评论(0编辑  收藏  举报