# FanQRCodeScan
**Repository Path**: E_wsq/FanQRCodeScan
## Basic Information
- **Project Name**: FanQRCodeScan
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-04-12
- **Last Updated**: 2020-12-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# FanQRCodeScan(iOS8+)
### App store 上线地址:[韩QRCode](https://itunes.apple.com/cn/app/id1255037808?mt=8) 上线预览图如下:
##### 系统自带二维码条形码的扫描和生成 (旧版UI图)
### 功能介绍
##### 1.二维码条形码扫描
```
FanQRCodeScanViewController *qrCoreVC=[[FanQRCodeScanViewController alloc]initWithQRBlock:^(NSString *resultSrt,NSString *type, BOOL isSuccess) {
if (isSuccess) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self fan_showAlertWithTitle:@"扫描结果" message:resultSrt];
});
NSLog(@"%@",resultSrt);
}else{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self fan_showAlertWithTitle:@"扫描失败" message:resultSrt];
});
NSLog(@"关闭或失败:%@",resultSrt);
}
}];
qrCoreVC.themColor=[UIColor redColor];
qrCoreVC.scanColor=[UIColor yellowColor];
[self presentViewController:qrCoreVC animated:YES completion:nil];
```
##### 2.二维码生成
```
//二维码调用
UIImage *image=[FanQRCodeScanViewController fan_qrCodeImageWithText:textField.text size:CGSizeMake(300, 300)];
#pragma mark - 二维码生成
+(UIImage *)fan_qrCodeImageWithText:(NSString *)text size:(CGSize)size{
return [[self class] fan_qrCodeImageWithText:text size:size color:[UIColor blackColor] bgColor:[UIColor whiteColor]];
}
+(UIImage *)fan_qrCodeImageWithText:(NSString *)text size:(CGSize)size color:(UIColor *)color bgColor:(UIColor *)bgColor{
NSData *stringData = [text dataUsingEncoding: NSUTF8StringEncoding];
//生成
CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
UIColor *onColor = color;
UIColor *offColor = bgColor;
//上色
CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"
keysAndValues:
@"inputImage",qrFilter.outputImage,
@"inputColor0",[CIColor colorWithCGColor:onColor.CGColor],
@"inputColor1",[CIColor colorWithCGColor:offColor.CGColor],
nil];
CIImage *qrImage = colorFilter.outputImage;
//绘制
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
if (cgImage==nil) {
return nil;
}
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return codeImage;
}
```
##### 3.条形码生成
```
//条形码调用
UIImage *image=[FanQRCodeScanViewController fan_generateBarImageWithCode:textField.text size:CGSizeMake(300, 160)];
//条形码生成
+ (UIImage *)fan_generateBarImageWithCode:(NSString *)code size:(CGSize)size{
//生成条形码
CIImage *barcodeImage;
//NSISOLatin1StringEncoding
NSData *data = [code dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:false];
CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];
[filter setValue:data forKey:@"inputMessage"];
barcodeImage = [filter outputImage];
//消除模糊(此种方法,得到的图片不能保存到相册)
// CGFloat scaleX = size.width / barcodeImage.extent.size.width;// extent 返回图片的frame
// CGFloat scaleY = size.height / barcodeImage.extent.size.height;
// CIImage *transformedImage = [barcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];
// return [UIImage imageWithCIImage:transformedImage];
//用绘制方法(可以保存到相册)不知道什么原因
CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:barcodeImage fromRect:barcodeImage.extent];
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetInterpolationQuality(context, kCGInterpolationNone);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
if (cgImage==nil) {
return nil;
}
UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRelease(cgImage);
return codeImage;
}
```
Like(喜欢)
==============
#### 有问题请直接在文章下面留言,喜欢就给个Star(小星星)吧!
#### 简书博客:[FanQRCodeScan(二维码条形码扫描生成解析)](http://www.jianshu.com/p/760e4654394f)说明更详细
#### Email: