// // // // 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