1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
//
//
//
// github:https://github.com/MxABC/LBXScan
// Created by lbxia on 15/3/4.
// Copyright (c) 2015年 lbxia. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import "LBXScanResult.h"
/**
@brief 封装ZXing和ios系统自带原生扫码功能
ZXing识别图片二维码以及生成二维码功能
识别码类型,AVMetadataObjectTypeQRCode:二维码 AVMetadataObjectTypeEAN13Code/AVMetadataObjectTypeEAN8Code:条形码
*/
@interface LBXScanWrapper : NSObject
/**
@brief 初始化相机,根据系统自动选择ZXing或ios自带识别功能
@param preView 视屏预览View
@param arrayBarCodeType 扫码类型,传值nil,默认很多种类型...
@param cropRect 识别区域
@param blockScanResult 返回扫码结果
@return LBXScanVendor
*/
- (instancetype)initWithPreView:(UIView*)preView ArrayObjectType:(NSArray*)arrayBarCodeType cropRect:(CGRect)cropRect
success:(void(^)(NSArray<LBXScanResult*> *array))blockScanResult;
/**
@brief 初始化相机,并指定使用ZXing库识别各种码
@param preView 视频显示View
@param blockScanResult 返回结果
@return LBXScanVendor
*/
- (instancetype)initZXingWithPreView:(UIView *)preView success:(void(^)(NSArray<LBXScanResult*> *array))blockScanResult;
/*!
* 设置扫码成功后是否拍照,ios7 AVFoundation框架,
* 从 CALayer获取不到图像,如果有谁知道怎么做,请告诉我,谢谢 lbxia20091227@foxmail.com
* 当前如果想要扫码后的照片,又没有拍照声音,可以考虑使用ZXing的代码库的方式
*
* @param isNeedCaputureImg YES:拍照, NO:不拍照
*/
- (void)setNeedCaptureImage:(BOOL)isNeedCaputureImg;
/*!
* 开始扫码,扫码成功返回数据后,内部调用stopScan,重新扫描需要重新调用startScan
*/
- (void)startScan;
/*!
* 停止扫码
*/
- (void)stopScan;
/*!
* 开启关闭闪光灯
*
* @param bOpen YES:开启,NO:关闭
*/
- (void)openFlash:(BOOL)bOpen;
/*!
* 开启或关闭闪光灯
* 之前是开启,则这次是关闭
* 之前是关闭,则这次是开启
*/
- (void)openOrCloseFlash;
/*!
* 修改扫码类型
*
* @param objType 扫码类型: AVMetadataObjectTypeQRCode:二维码 AVMetadataObjectTypeEAN13Code:条形码
*/
- (void)changeScanObjType:(NSArray*)barCodeType;
/*!
* 生成二维码(根据系统版本,选择对应生成方法)
*
* @param str 二维码字符串
* @param size 二维码图片大小
*
* @return 返回生成的图像
*/
+ (UIImage*)createQRWithString:(NSString*)str size:(CGSize)size;
/**
@brief 给二维码图像上色
@param image 二维码图像
@param red 红色
@param green 绿色
@param blue 蓝色
@return 上色后的图像
*/
+ (UIImage*)imageBlackToTransparent:(UIImage*)image withRed:(CGFloat)red andGreen:(CGFloat)green andBlue:(CGFloat)blue;
/**
@brief 图像中间加logo图片
@param srcImg 原图像
@param LogoImage logo图像
@param logoSize logo图像尺寸
@return 加Logo的图像
*/
+ (UIImage*)addImageLogo:(UIImage*)srcImg centerLogoImage:(UIImage*)LogoImage logoSize:(CGSize)logoSize;
/**
* 通过UIImageView形式添加Logo
*
* @param srcImgView 显示二维码的UIImageView
* @param logoView logo的UIImageView
* @param logoSize logo大小
*/
+ (void)addImageViewLogo:(UIImageView*)srcImgView centerLogoImageView:(UIImageView*)logoView logoSize:(CGSize)logoSize;
#pragma mark - 生成二维码,背景色及二维码颜色设置
/**
@brief 生成颜色二维码,引用http://www.jianshu.com/p/e8f7a257b612
@param text 二维码字符串
@param size 大小
@param qrColor 二维码颜色
@param bkColor 背景色
@return 二维码图像
*/
+ (UIImage*)createQRWithString:(NSString*)text QRSize:(CGSize)size QRColor:(UIColor*)qrColor bkColor:(UIColor*)bkColor;
/**
@brief 各种码生成,如条形码等
@param str 字符串
@param size 大小
@param format 格式 AVMetadataObjectTypeEAN13Code、AVMetadataObjectTypeCode39Code等
@return 码的图像
*/
+ (UIImage*)createCodeWithString:(NSString*)str size:(CGSize)size CodeFomart:(NSString*)format;
//识别图片上的二维码
/*!
* 识别各种码图片
*
* @param image 图像
* @param block 返回识别结果
*/
+ (void)recognizeImage:(UIImage*)image success:(void(^)(NSArray<LBXScanResult*> *array))block;
#pragma mark- 震动、声音效果
/**
@brief 识别成功震动提醒
*/
+ (void)systemVibrate;
/**
@brief 扫码成功声音提醒
*/
+ (void)systemSound;
#pragma mark -相机、相册权限
/**
@brief 获取相机权限
*/
+ (BOOL)isGetCameraPermission;
/**
@brief 获取相册权限
*/
+ (BOOL)isGetPhotoPermission;
/**
@brief 获取摄像机最大拉远镜头
@return 放大系数
*/
- (CGFloat)getVideoMaxScale;
/**
@brief 拉近拉远镜头
@param scale 系数
*/
- (void)setVideoScale:(CGFloat)scale;
@end