18th,March,2016
(题外话: 其实现在是拒绝写博客的,因为不想写,但是还是写吧)
一开始可以扫描二维码,但不支持一维码。
1). 添加metadataObjectTypes:AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code,AVMetadataObjectTypeCode39Code
但是还是不支持扫描一维码。
然后看了关于iOS原生条形码扫描,你需要注意的两三事 此文中提到“是在Detect Center那个点,画一个无限延伸的米字型,然后去判断每一条在线能否解析出条形码所需要的0101010序列。而iOS默认的Center是 Layer 的 Center。提示给用户的那个框,已经远离了Center。所以我们竖着扫描的时候,那条水平的扫描线是没有贯穿条形码的,所以扫不上他。于是乎要根据设备,iPhone4 iPhone5 通过AVCaptureDeviceFormat和AVCaptureSessionPreset 重新设置一下AVCaptureMetadataOutput rectOfInterest,结果问题就解决了。”
我去看了,FAQ中提到“the set of scan lines is expanded to cover a larger portion of the region of interest ("Additional")”, 在少数一些情况下扫描线会扩大到原始扫描区域之外,关于"Additional"的概念也不懂
所以我就上网找啊找 怎么使用AVCaptureDeviceFormat和AVCaptureSessionPreset去设置rectOfInterest
。。。。然后就是没有找到。
最后自己按照rectOfInterest的设置规则设置,然后可以扫描了。
19th,March,2016
识别区域默认是照相机捕获的整张照片,可通过RectOfInterest配置识别区域提升扫描性能和速度,
Tip: CGRectMak(y, x, height, width) 值为0-1.0f,eg: 扫描区域.y/屏幕高度。 网上资料:AVCapture捕捉的图片是横着的,而手机是竖着的,所以需要旋转90度。
该属性可预设图像分辨率, 决定照片中每一帧图像质量的大小:
AVCaptureSessionPresetPhoto/High/Medium/Low
AVCaptureSessionPreset320x240/352x288/640x480/960x540/1280x720/1920x1080/3840x2160
想要识别小图则需要讲该属性设高一点,但相应的效率会比Low的低。
AVCaptureSessionPresetHight ==> iPhone5
一维码:条码的宽度储存数据,有一组规则排序的条和空以及对应的字符组成,
“条”(即使黑色的部分)光线反射率较低
“空” (即白色的部分)光线发射率较高
而这些“条”和“空”组成的数据可以转换成二进制和十进制的信息。
二维码:90年代发明了二维码,主要分为两种,一是堆叠式/行排式二维条码。另一种就是现在普遍使用的矩阵式二维码(Quick Response Code)拥有一维码的优点同时,容错性高,储存数据量大。
未完待续。。。敬请期待。。。如有想法。。。欢迎交流
参考资料: