2012-01-04 44 views
1

我正在使用以下代碼使用Zbar sdk掃描條形碼。如何使用Zbar裁剪掃描的條形碼?

我通過related question of stackoverflow但這個答案不適合我。

直到現在我都做了,

-(IBAction)btnCLick 
    { 
     ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
     reader.readerDelegate = self; 
     reader.supportedOrientationsMask = ZBarOrientationMaskAll; 

     ZBarImageScanner *scanner = reader.scanner; 
     [scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0]; 


     [self presentModalViewController:reader animated:YES]; 
     [reader release]; 
    } 

- (void) imagePickerController: (UIImagePickerController*) aReader 
    didFinishPickingMediaWithInfo: (NSDictionary*) info 
    { 

     id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults]; 

     ZBarSymbol *symbol = nil; 

     for(symbol in results) 
     { 
      break; 
     } 
     txtViewResult.text = symbol.data; 
     imgViewResult.image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

     [self advanceCrop:imgViewResult]; 
     [reader dismissModalViewControllerAnimated:YES]; 

    } 

advanceCrop方法是做作物,

-(void)advanceCrop:(UIImageView *)aimgViewResult 
    { 


     CGRect r =CGRectMake(50/426., 1-(20+250)/320., 150/426., 250/320.); 
     reader.scanCrop = r; 


     r = CGRectMake(20, 50, 250, 150); 

     imgViewResult.frame = r; 
     NSLog(@"imgview height:%f width:%f",imgViewResult.frame.size.height, imgViewResult.frame.size.width); 


     /* 

     // CGRect r = CGRectFromString(lblImage.text); 
     CGRect r = CGRectMake(50/426., 1-(20+250)/320., 150/426., 250/320.); 

     reader.scanCrop = r; 
     NSLog(@"r: x:%f y:%f height :%f width:%f",r.origin.x ,r.origin.y ,r.size.height , r.size.width); 

     // aLblImage.text = NSStringFromCGRect(r); 

     r.origin.x *= 426; 
     r.origin.y *= 320; 
     r.size.width *= 426; 
     r.size.height *= 320; 

     imgViewResult.frame = r; 
     NSLog(@"imgview height:%f width:%f",imgViewResult.frame.size.height, imgViewResult.frame.size.width); 
     */ 
    } 

如果我得到的圖像下面,我想裁剪,是有可能與zbar和?

enter image description here

回答

1

試試這個。如果CGRect = CGRectMake(x, y, width, height);,則請執行:

float A = y/readerView.bounds.size.height; 
float B = 1 - (x + width)/readerView.bounds.size.width; 
float C = (y + height)/readerView.bounds.size.height; 
float D = 1 - x/readerView.bounds.size.width;; 
CGRectMake(A, B, C, D); 
相關問題