• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

SYQRCodeDemo: /**SYQRCode:IOS原生API,需要IOS7.0及以上系统支持。 用法: //扫 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

SYQRCodeDemo

开源软件地址:

https://gitee.com/reesun1130/SYQRCodeDemo

开源软件介绍:

SYQRCodeDemo

SYQRCode:低仿微信二维码扫描,IOS原生API,需要IOS7.0及以上系统支持。简单易用,使用block做回调处理。fix crash ---- Terminating app due to uncaught exception NSInvalidArgumentException , reason: [AVCaptureMetadataOutput setMetadataObjectTypes:] unsupported type found. Use availableMetadataObjectTypes.

用法:###使用前请判断是否允许访问相机:

+ (BOOL)isAVCaptureActive{  AVCaptureDevice *aDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];  NSError *inputError = nil;  AVCaptureDeviceInput *aInput = [AVCaptureDeviceInput deviceInputWithDevice:aDevice error:&inputError];  if (aInput == nil)  {      SYLog(@"init AVCapture fail--%@",inputError);      return NO;  }  return YES;}if(isAVCaptureActive){   SYQRCodeViewController *syqrc = [[SYQRCodeViewController alloc] init];   syqrc.SYQRCodeSuncessBlock = ^(NSString *qrString){     self.saomiaoLabel.text = qrString;   };   syqrc.SYQRCodeCancleBlock = ^(SYQRCodeViewController *aqrc){     self.saomiaoLabel.text = @"扫描取消~";     [aqrc dismissViewControllerAnimated:YES completion:nil];   };   [self presentViewController:syqrc animated:YES completion:nil];}/*AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];    if(status == AVAuthorizationStatusAuthorized){   SYQRCodeViewController *syqrc = [[SYQRCodeViewController alloc] init];   syqrc.SYQRCodeSuncessBlock = ^(NSString *qrString){     self.saomiaoLabel.text = qrString;   };   syqrc.SYQRCodeCancleBlock = ^(SYQRCodeViewController *aqrc){     self.saomiaoLabel.text = @"扫描取消~";     [aqrc dismissViewControllerAnimated:YES completion:nil];   };   [self presentViewController:syqrc animated:YES completion:nil];}*/

效果如下:

image

另附IOS7二维码生成方法:

###- (UIImage *)makeQRCodeImage###{CIFilter *filter_qrcode = [CIFilter filterWithName:@"CIQRCodeGenerator"];[filter_qrcode setDefaults];

NSData *data = [@"https://github.com/reesun1130" dataUsingEncoding:NSUTF8StringEncoding];[filter_qrcode setValue:data forKey:@"inputMessage"];CIImage *outputImage = [filter_qrcode outputImage];CIContext *context = [CIContext contextWithOptions:nil];CGImageRef cgImage = [context createCGImage:outputImage                                   fromRect:[outputImage extent]];UIImage *image = [UIImage imageWithCGImage:cgImage                                     scale:1.                               orientation:UIImageOrientationUp];//大小控制UIImage *resized = [self resizeImage:image                         withQuality:kCGInterpolationNone                                rate:5.0];//颜色控制resized = [self imageBlackToTransparent:resized withRed:30 andGreen:191 andBlue:109];CGImageRelease(cgImage);return resized;

###}

###- (UIImage *)resizeImage:(UIImage *)image

withQuality:(CGInterpolationQuality)quality

rate:(CGFloat)rate

###{UIImage *resized = nil;CGFloat width = image.size.width * rate;CGFloat height = image.size.height * rate;

UIGraphicsBeginImageContext(CGSizeMake(width, height));CGContextRef context = UIGraphicsGetCurrentContext();CGContextSetInterpolationQuality(context, quality);[image drawInRect:CGRectMake(0, 0, width, height)];resized = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return resized;

###}

###void ProviderReleaseData (void *info, const void data, size_t size){free((void)data);###}

###- (UIImage*)imageBlackToTransparent:(UIImage*)image withRed:(CGFloat)red andGreen:(CGFloat)green andBlue:(CGFloat)blue###{const int imageWidth = image.size.width;const int imageHeight = image.size.height;

size_t      bytesPerRow = imageWidth * 4;uint32_t* rgbImageBuf = (uint32_t*)malloc(bytesPerRow * imageHeight);CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();CGContextRef context = CGBitmapContextCreate(rgbImageBuf, imageWidth, imageHeight, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipLast);CGContextDrawImage(context, CGRectMake(0, 0, imageWidth, imageHeight), image.CGImage);// 遍历像素int pixelNum = imageWidth * imageHeight;uint32_t *pCurPtr = rgbImageBuf;for (int i = 0; i < pixelNum; i++, pCurPtr++){    if ((*pCurPtr & 0xFFFFFF00) < 0x99999900) // 将白色变成透明    {        // 改成下面的代码,会将图片转成想要的颜色        uint8_t* ptr = (uint8_t*)pCurPtr;        ptr[3] = red; //0~255        ptr[2] = green;        ptr[1] = blue;    }    else    {        uint8_t* ptr = (uint8_t*)pCurPtr;        ptr[0] = 0;    }}// 输出图片CGDataProviderRef dataProvider = CGDataProviderCreateWithData(NULL, rgbImageBuf, bytesPerRow * imageHeight, ProviderReleaseData);CGImageRef imageRef = CGImageCreate(imageWidth, imageHeight, 8, 32, bytesPerRow, colorSpace, kCGImageAlphaLast | kCGBitmapByteOrder32Little, dataProvider, NULL, true, kCGRenderingIntentDefault);CGDataProviderRelease(dataProvider);UIImage *resultUIImage = [UIImage imageWithCGImage:imageRef];// 清理空间CGImageRelease(imageRef);CGContextRelease(context);CGColorSpaceRelease(colorSpace);return resultUIImage;

###}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap