关闭

ios 开发之 扫描二维码和生成二维码

标签: 扫描二维码ios开发
532人阅读 评论(0) 收藏 举报
分类:

一、生成二维码

在网上遇到很多生成二维码第三方的框架,但是都觉得不好用,而且有很多警告。

自己就写了一个

  • (UIImage*)twoDensionImageWtihString:(NSString*)string

{

CIFilter *filter_qrcode = [CIFilter filterWithName:@”CIQRCodeGenerator”]; [filter_qrcode setDefaults];

//生成二维码 :这里是二维码的链接形式

NSData *data = [[NSString stringWithFormat:@”yxh://coupon/%@”,string] 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:0.5 orientation:UIImageOrientationUp];

//设置质量

CGFloat width = image.size.width * 5.0; CGFloat height = image.size.height * 5.0;

//画布大小 UIGraphicsBeginImageContext(CGSizeMake(width+30, height+30)); CGContextRef context1 = UIGraphicsGetCurrentContext();
//质量的枚举类型 kCGInterpolationNone CGContextSetInterpolationQuality(context1,kCGInterpolationNone);

//将二维码画到画布中 [image drawInRect:CGRectMake((width+30)/2-width/2, (height+30)/2-height/2, width, height)];

image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

return image;

}//生成二维码

​二、扫描二维码

扫描二维码,之前有用ZBarSDK做过,但是不理想,因为有边框去不掉,自定义的控件也没有达到好的效果,看到微信的扫描二维码,觉得还很不错,于是乎找了很多的材料,最终不负使命。 用这个SYQRCodeViewController,根据项目需要进行微调就可以。

下载地址 https://github.com/reesun1130/SYQRCodeDemo

需要注意的是:(1)兼容ios7.0以上;(2)扫描二维码需要访问相册,ios8.0默认相机是打开可以访问的,但是ios7.0需要判断相机权限。​

​- (BOOL)isAVCaptureActive

{ AVCaptureDevice *aDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *inputError = nil;

AVCaptureDeviceInput *aInput = [AVCaptureDeviceInput deviceInputWithDevice:aDevice error:&inputError];

if (aInput == nil){
UIAlertView alert = [[UIAlertView alloc] initWithTitle:@”温馨提醒” message:@”\n您还未允许’’访问你的相机,如果需要请设置:设置–>隐私–>相机–>悦享惠–>打开” delegate:nil cancelButtonTitle:@”知道了\n” otherButtonTitles:nil];

[alert show]; return NO;

}else{

return YES; }

}//判断相机权限是否打开

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:135488次
    • 积分:2343
    • 等级:
    • 排名:第17907名
    • 原创:133篇
    • 转载:5篇
    • 译文:0篇
    • 评论:15条
    最新评论