使用
CIDetector可以很方便的检测并读取二维码。下面是一个从
UIImage中读取二维码的样例,我们要把图片上所有的二维码信息都打印出来。
@H_403_11@
@H_403_11@
@H_403_11@
@H_403_11@
@H_403_11@
@H_403_11@
代码如下:
@H_403_11@
@H_403_11@
@H_403_11@
import
UIKit
@H_403_11@
@H_403_11@
class
ViewController
:
UIViewController
{
@H_403_11@
@H_403_11@
override
func
viewDidLoad() {
@H_403_11@
super
.viewDidLoad()
@H_403_11@
@H_403_11@
let
qrcodeImg =
UIImage
(named:
"codeBg.png"
)
@H_403_11@
ciImage:
CIImage
=
CIImage
(image:qrcodeImg!)!
@H_403_11@
@H_403_11@
context =
CIContext
(options:
nil
)
@H_403_11@
|
控制台输出如下:
@H_403_11@
扫描到二维码个数:2
http://www.hangge.com
http://www.hangge.com @H_403_11@ 可以看到两个二维码都成功的读取到了。
@H_403_11@
http://www.hangge.com
http://www.hangge.com @H_403_11@ 可以看到两个二维码都成功的读取到了。
@H_403_11@
(注:这个我原来用模拟器一直检测不到二维码,使用真机调试就没问题。
感谢网友“落叶”的提醒,模拟器选iphone5s及以上设备也是可以检测到的。)
2,从相册中选择图片读取二维码
@H_403_11@
@H_403_11@
3,使用摄像头扫描读取二维码
(1)扫描主要使用的是 AVFoundation,用起来方便简单
(2)通过 AVCaptureMetadataOutput的 rectOfInterest属性,可以设置探测探测区域。同时给这个探测区域添加个方框,只有在框中的二维码才会被扫描到。
效果图如下:
2,从相册中选择图片读取二维码
1
@H_403_11@
2
@H_403_11@
3
@H_403_11@
4
@H_403_11@
5
@H_403_11@
6
@H_403_11@
7
@H_403_11@
8
@H_403_11@
9
@H_403_11@
10
@H_403_11@
11
@H_403_11@
12
@H_403_11@
13
@H_403_11@
14
@H_403_11@
15
@H_403_11@
|
import
UIKit
@H_403_11@
@H_403_11@
class
ViewController
:
UIViewController
UIImagePickerControllerDelegate
403_11@
|
3,使用摄像头扫描读取二维码
(1)扫描主要使用的是 AVFoundation,用起来方便简单
(2)通过 AVCaptureMetadataOutput的 rectOfInterest属性,可以设置探测探测区域。同时给这个探测区域添加个方框,只有在框中的二维码才会被扫描到。
效果图如下:
@H_403_11@
@H_403_11@
代码如下:
@H_403_11@
@H_403_11@
@H_403_11@
@H_403_11@
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_915.html
代码如下:
1
@H_403_11@
2
@H_403_11@
3
@H_403_11@
4
@H_403_11@
5
@H_403_11@
6
@H_403_11@
7
@H_403_11@
8
@H_403_11@
9
@H_403_11@
10
@H_403_11@
11
@H_403_11@
12
@H_403_11@
13
@H_403_11@
14
@H_403_11@
15
@H_403_11@
16
@H_403_11@
17
@H_403_11@
18
@H_403_11@
19
@H_403_11@
20
@H_403_11@
21
@H_403_11@
22
@H_403_11@
23
@H_403_11@
24
@H_403_11@
25
@H_403_11@
26
@H_403_11@
27
@H_403_11@
28
@H_403_11@
29
@H_403_11@
30
@H_403_11@
31
@H_403_11@
32
@H_403_11@
33
@H_403_11@
34
@H_403_11@
35
@H_403_11@
36
@H_403_11@
37
@H_403_11@
38
@H_403_11@
39
@H_403_11@
40
@H_403_11@
41
@H_403_11@
42
@H_403_11@
43
@H_403_11@
44
@H_403_11@
45
@H_403_11@
46
@H_403_11@
47
@H_403_11@
48
@H_403_11@
49
@H_403_11@
50
@H_403_11@
51
@H_403_11@
52
@H_403_11@
53
@H_403_11@
54
@H_403_11@
55
@H_403_11@
56
@H_403_11@
57
@H_403_11@
58
@H_403_11@
59
@H_403_11@
60
@H_403_11@
61
@H_403_11@
62
@H_403_11@
63
@H_403_11@
64
@H_403_11@
65
@H_403_11@
66
@H_403_11@
67
@H_403_11@
68
@H_403_11@
69
@H_403_11@
70
@H_403_11@
|
import
UIKit
@H_403_11@
AVFoundation
@H_403_11@
@H_403_11@
class
ViewController
:
UIViewController
AVCaptureMetadataOutputObjectsDelegate
403_11@
|
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_915.html