ios-zbar scanview 根据扫描区域切割图片

在scanview中添加扫描区域

ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    //CGRect frame= CGRectMake(20, 30, 320, 260);
    reader.scanCrop= CGRectMake(0.2, .1, .47, .8);  

自定义scanview添加一个自定义的扫描框

- (UIView *)setOverlayPickerView{
    UIView *v=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    [v setBackgroundColor:[UIColor clearColor]];
    UILabel *scanningLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 50, 120, 30)];
    [scanningLabel setBackgroundColor:[UIColor clearColor]];
    [scanningLabel setFont:[UIFont fontWithName:@"Courier" size: 18.0]];
    [scanningLabel setTextColor:[UIColor redColor]];
    [scanningLabel setText:@"Scanning..."];
    [scanningLabel setHidden:NO];
    [v addSubview:scanningLabel];
     
    UIImageView *overlayImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"overlaygraphic.png"]];
    [overlayImageView setFrame:CGRectMake(30, 100, 260, 200)];
    [v addSubview:overlayImageView];
    UIToolbar *myToolBar = [[UIToolbar alloc] init];
    UIBarButtonItem *backButton=[[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(dismissOverlayView:)];
    UISwitch *sw=[[UISwitch alloc] init];
    [sw setOn:NO];
    UIBarButtonItem *switchButton=[[UIBarButtonItem alloc] initWithCustomView:sw];
    UIBarButtonItem *fixed=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [sw addTarget:self action:@selector(handleSwitchFlash:) forControlEvents:UIControlEventValueChanged];
    [myToolBar setItems:[NSArray arrayWithObjects:backButton,fixed,switchButton,nil]];
    [myToolBar setBarStyle:UIBarStyleDefault];
    CGRect toolBarFrame;
    toolBarFrame = CGRectMake(0, 436, 320, 44);
    [myToolBar setFrame:toolBarFrame];
    [v addSubview:myToolBar];
    return  v;
}

切割图片

// EXAMPLE: do something useful with the barcode image
     
    UIImage *largeImage=[info objectForKey: UIImagePickerControllerOriginalImage];
     
    //UIImage * PortraitImage = [[UIImage alloc] initWithCGImage: largeImage.CGImage
    //                                                     scale: 1.0
    //                                               orientation: UIImageOrientationLeft];
    UIImage * PortraitImage=[largeImage imageRotatedByDegrees:90];
     
    //CGRectMake(0.2, .1, .47, .8);
    float w=largeImage.size.width;
    float h=largeImage.size.height;
    NSLog(@"====largeimagesize:h=%f,w=%f",largeImage.size.height,largeImage.size.width);
    NSLog(@"====PortraitImage:h=%f,w=%f",PortraitImage.size.height,PortraitImage.size.width);
    CGImageRef imageRef = CGImageCreateWithImageInRect([PortraitImage CGImage], CGRectMake(w*.25, h*.2, w*.8, h*.27));
     
     
    // or use the UIImage wherever you like
    [self.scanImageView setImage:[UIImage imageWithCGImage:imageRef]];

  

  

posted @   阿新  阅读(3919)  评论(2编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示