Giter Club home page Giter Club logo

lbxscan's Introduction

iOS 二维码、条形码

Platform Language License CocoaPods Version

swift版本 点这里

DIY参数理解参考工具点这里

QQ交流群: 522806629

QQ付费咨询群:678534768

iOS扫码封装

  • 扫码识别封装: 系统API(AVFoundation)、ZXing、ZBar
  • 扫码界面效果封装
  • 二维码、条形码
  • 相册获取图片后识别
  • 系统API及ZXing支持界面动态横竖屏旋转,设置扫码对象接口,正确显示相机预览
  • 支持连续扫码(可通过参数设置)

设置参数自定义效果

  • 扫码框周围区域背景色可设置
  • 扫码框颜色可也设置
  • 扫码框4个角的颜色可设置、大小可设置
  • 可设置只识别扫码框内的图像区域
  • 可设置扫码成功后,获取当前图片
  • 动画效果选择: 线条上下移动、网格形式移动、中间线条不移动(一般扫码条形码的效果)

模仿其他app(通过设置参数即可完成)

  • 模仿QQ扫码界面
  • 支付宝扫码框效果
  • 微信扫码框效果

历史版本

2.5

  • 支持横竖屏(ZBar不支持)
  • 支持连续扫码

2.4

  • ZBarSDK 删除UIWebView,相机采集分辨率设置高分辨率LBXZBarSDK
  • 当前库删除了ZBarSDK了依赖,需要ZBAR的,可单独一行pod
  • 原生和ZXing扫码后获取条码位置坐标返回,Demo中标记条码位置坐标
  • 原生扫码,支持相机预览放大(见Demo)
  • Demo中新增原生、ZXing、ZBar 三个库对应的扫码控制器,可根据需要定制修改

2.3

  • 修改ZXing内存修改bug,完善ZXing扫码完成后,内存释放
  • Demo相机和相册权限获取代码优化
  • ZBar修改参数支持ITF-14
  • 扫码启动相机提示优化,放置中间位置

2.2

  • 可分库下载(native、ZXing、ZBar)

1.x

  • 1.x

Installation with CocoaPods

可独立安装某一功能,ZXing已经下载到本工程,解决之前版本下载速度慢的问题


  • 安装所有库包括UI(不包含ZBar)
 pod 'LBXScan', '~> 2.5'

建议按下面这样分组写,安装好后按文件夹分组,否则所有文件在一个文件夹里,很乱

pod 'LBXScan/LBXNative','~> 2.5'
pod 'LBXScan/LBXZXing','~> 2.5'
pod 'LBXScan/UI','~> 2.5'

需要ZBar支持的

pod 'LBXZBarSDK','~> 1.3'
  • 只安装系统原生API封装库
pod 'LBXScan/LBXNative','~> 2.5'
  • 只安装ZXing封装库
pod 'LBXScan/LBXZXing','~> 2.5'
  • 只安装ZBar封装库
pod 'LBXZBarSDK','~> 1.3'
  • 只安装UI
pod 'LBXScan/UI','~> 2.5'
  • 安装任意组合

你可以通过上面的安装方式,安装任意组合

Demo测试

  • xcode版本:xcode9.2
  • 将工程下载下来,打开DemoTests中 LBXScanDemo.xcworkspace
  • Demo提供了选择对应库进行扫码识别、相册选择图片识别、生成条码等测试

UI DIY参数介绍

辅助理解参考工具请看:LBXScanUITool

- (LBXScanViewStyle*)DIY
{
//设置扫码区域参数
LBXScanViewStyle *style = [[LBXScanViewStyle alloc]init];

//扫码框中心位置与View中心位置上移偏移像素(一般扫码框在视图中心位置上方一点)
style.centerUpOffset = 44;



//扫码框周围4个角的类型设置为在框的上面,可自行修改查看效果
style.photoframeAngleStyle = LBXScanViewPhotoframeAngleStyle_On;

//扫码框周围4个角绘制线段宽度
style.photoframeLineW = 6;

//扫码框周围4个角水平长度
style.photoframeAngleW = 24;

//扫码框周围4个角垂直高度
style.photoframeAngleH = 24;


//动画类型:网格形式,模仿支付宝
style.anmiationStyle = LBXScanViewAnimationStyle_NetGrid;

//动画图片:网格图片
style.animationImage = [UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_part_net"];;

//扫码框周围4个角的颜色
style.colorAngle = [UIColor colorWithRed:65./255. green:174./255. blue:57./255. alpha:1.0];

//是否显示扫码框
style.isNeedShowRetangle = YES;
//扫码框颜色
style.colorRetangleLine = [UIColor colorWithRed:247/255. green:202./255. blue:15./255. alpha:1.0];

//非扫码框区域颜色(扫码框周围颜色,一般颜色略暗)
//必须通过[UIColor colorWithRed: green: blue: alpha:]来创建,内部需要解析成RGBA
style.notRecoginitonArea = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.6];

return style;
}

扫码控制器示例代码(在Demo代码中,可根据需要自行修改)

  • 基类控制器 LBXScanBaseViewController

  • Native(原生扫码)扫码控制器

LBXScanNativeViewController
QQScanNativeViewController
  • ZXing扫码控制器
LBXScanZXingViewController
QQScanZXingViewController
  • ZBar扫码控制器
LBXScanZBarViewController
QQScanZBarViewController

使用扫码控制器LBXScanViewController(API_DEPRECATED,不支持ZBar)

如果你需要使用提供的扫码控制器LBXScanViewController(包含在UI模块中),需要在你的工程中添加预编译头文件xx.pch文件或对应调用的地方添加对应的宏(LBXScanViewController代码包含了所有的库和UI,所以需要你根据你自己下载的库的情况,对应添加宏)

例如,当前工程Demo中PrefixHeader.pch,我的demo中下载了所有的模块,所以下面定义了各个模块的宏


#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

#define LBXScan_Define_Native  //下载了native模块
#define LBXScan_Define_ZXing   //下载了ZXing模块
#define LBXScan_Define_ZBar   //下载了ZBar模块
#define LBXScan_Define_UI     //下载了界面模块
#endif

扫码结果处理,可以通过实现委托方法 scanResultWithArray 或继承控制器LBXScanViewController,然后override方法scanResultWithArray即可

界面效果

image

支持动态横竖屏

scanrotate.gif

打赏作者

如果LBXScan在开发中有帮助到你、如果你需要技术支持,都可以拼命打赏我!

支付.jpg

lbxscan's People

Contributors

abcmx-lbx avatar longlz19 avatar maxfong avatar mxabc avatar scottphc avatar xxjh avatar zhyizhou avatar zxldev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lbxscan's Issues

至今不用系统自带的原因

不带图片识别,现在很多的App都有从相册扫描识别,博主试着通过zxing添加一下,估计使用的人更多。

在继承LBXScanViewController更改识别码类型BUG

在LBXScanViewController的viewDidAppear中[self performSelector:@selector(startScan) withObject:nil afterDelay:0.2];在0.2前,_scanObj为空,调用changeScanObjType无效。
我在LBXScanViewController创建的对象中,在viewDidAppear方法里我设置0.3之后再调用changeScanObjType,可行。

条形码识别太慢

综合测试下,条形码的识别速度太慢了.尝试替换第三方为zbar 效果好很多.

支付宝样式

支付宝网格style,取景框外的网格也可以看到,ps:已经star =。=

加载菊花和文字适配问题

您好、首先非常感谢您提供了这个第三方,但是我在使用时有1个问题。

1、启动相机时,加载菊花和提示文字适配有一些问题。

分辨率问题

电脑的亮度调低的时候,扫码没有反应,这个不知道是什么原因,我用系统的也是有这样的问题

识别区域没有上移

style.centerUpOffset = 44;这时候还可以识别
style.centerUpOffset = 100已经不能识别,需要把二维码放到中间区域,而不是扫描框才能识别。
//根据矩形区域,获取识别区域

  • (CGRect)getScanRectWithPreView:(UIView_)view style:(LBXScanViewStyle_)style 这个方法没有执行

ios 7扫码识别失败

之前的版本木问题,但是更新后,扫码结束后返回会提示扫码识别失败

动画问题

1,设置动画无效
2,设置网格扫描动画崩溃,崩在两处设置frame的地方- LBXScanNetAnimation.m的96和111行

ZXingObjC-prefix.pch file not found

你好,我是IOS新手,下载项目oc代码后,编译提示Files/ZXingObjC/ZXingObjC-prefix.pch' file not found。这个怎么处理喃

用系统生成的码,识别不出来!!

/*!

  • 生成二维码
  • @param str 二维码字符串
  • @param size 二维码图片大小
  • @return 返回生成的图像
    */

  • (UIImage_)createQRWithString:(NSString_)str size:(CGSize)size
    {
    if ([LBXScanWrapper isSysIos7Later]) {

    return [LBXScanWrapper createNonInterpolatedUIImageFormCIImage:[LBXScanWrapper createQRForString:str] withSize:size.width];
    }
    else
    return [ZXingWrapper createCodeWithString:str size:size CodeFomart:kBarcodeFormatQRCode];
    }

上面的方式,iOS7后,识别不出来!!! 就是用系统的生成,无法解密?
二维码:000004122453

引入工程后第一次打开扫码界面不会提示打开照相机

很好的分享!但是遇到一点小问题。引入工程后第一次打开扫码界面不会提示打开照相机,隐私的相机里也看不到该应用,扫码界面背景是黑的没有打开照相机,请问是需要给我的应用添加相机权限吗还是如何解决?我是新手,希望得到您的答复。

扫码识别区

楼主,还想问下,你这个 demo,能改扫码识别区吗?现在的 demo 是只有在中间的那个正方形框里才能识别出条码,现在我想要把外面的覆盖区也做成识别区,需要改哪里呢?

7以后无法使用Zxing库扫描问题

  • (instancetype)initWithPreView:(UIView_)preView ArrayObjectType:(NSArray_)arrayBarCodeType cropRect:(CGRect)cropRect
    success:(void(^)(NSArray<LBXScanResult*> *array))blockScanResult
    {
    if (self = [super init])
    {
    self.isUseZXingLib = NO;
    self.arrayBarCodeType = arrayBarCodeType;
    CGRect frame = preView.frame;
    frame.origin = CGPointZero;

    if ( [LBXScanWrapper isSysIos7Later] )
    {
        _scanNativeObj = [[LBXScanNative alloc]initWithPreView:preView ObjectType:arrayBarCodeType cropRect:cropRect success:^(NSArray<LBXScanResult*> *array) {
    
            if (blockScanResult)
            {
                blockScanResult(array);
            }
        }];
        [_scanNativeObj setNeedCaptureImage:YES];
    }
    else
    {
        _scanZXingObj = [[ZXingWrapper alloc]initWithPreView:preView block:^(ZXBarcodeFormat barcodeFormat, NSString *str, UIImage *scanImg) {
    
            //TODO:ZXing统一识别所有的码
            if ( blockScanResult )
            {
                NSString *barCodeType = [LBXScanWrapper convertZXBarcodeFormat:barcodeFormat];
    
                LBXScanResult *result = [[LBXScanResult alloc]initWithScanString:str imgScan:scanImg barCodeType:barCodeType];
    
                blockScanResult(@[result]);
            }
        }];
    }
    

    }

    return self;
    }

这个方法else的分之里要添加一行 self.isUseZXingLib = YES 不然无法进行扫描,希望您确认一下

利用delegate 函数, 传出扫描结果。

首先很喜欢这个library。

有个小建议,能不能把扫描结果通过一个delegate的函数传出来?这样我们就可以在任何一个View Controller里面使用扫描结果了。也就是说,LBXScanViewController 只负责扫描,如何处理结果让其他VC来控制。增加了灵活性!

logo图片会失真、是否可加入多国语系?

LBXScanWrapper.m

  • (UIImage_)addImageLogo:(UIImage_)srcImg centerLogoImage:(UIImage*)LogoImage logoSize:(CGSize)logoSize

UIGraphicsBeginImageContext(srcImg.size); 此行会导致图片失真(环境:iOS8)
建议修改成UIGraphicsBeginImageContextWithOptions(srcImg.size, NO, 0.0);


LBXScanViewController.m
是否改为多国语系?
LocalizedString跟bundle搭配使用。
例如:相机启动中、请到设置隐私中开启本程序相机权限...

扫码成功提示音

你好,我想问下,这个扫码成功的时候会有一个提示音,这个提示音的音量大小能设置么?我们有个需求是要求当手机物理声音调整到小于50%的时候,我使用这个扫码功能,音量自动调整到80%

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.