您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12944|回复: 0
打印 上一主题 下一主题

[php学习资料] PHP如何实现二维码的生成以及识别(代码) ------------------...

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1 o" g- O' v/ _2 O; L& c---------------------------------------------------------------------------------------------------  }( ~2 Q/ A0 c2 l0 ]
二维码的分类8 O  F; I9 q+ e
线性堆叠式二维码' _+ V: P( A/ V; l9 I9 P
# v# m; k% q' _" D5 v7 o0 c
矩阵式二维码
* p& G2 t( `; c3 n2 q
3 E* H* {! H7 `# G* ^# e7 n9 Y二维码的优缺点& Q1 y5 H- e  [: B
优点) q9 k  S3 `! j/ u
信息容量大  U; Z/ ?( Y* \& P/ M& ]
8 B1 d1 C5 E/ z
编码范围广& k5 c" u5 M/ J6 i9 g. g
. k+ b& W( g6 F; ~+ `1 D
容错能力强2 ]3 u0 a( z0 K0 \: y/ Z
" I3 N6 {! t2 D) v8 ]
译码可靠性高2 M2 I5 D- x, l: o3 k

, X+ C; ]' K. O2 F8 }6 p可引入加密措施+ |3 k6 ^! i2 O
; i! M) N  v, m8 B2 c
成本低,易制作5 E6 l6 K% u$ V3 Y8 `

/ D2 \0 {; ]% A# Y缺点
7 J! Z7 F2 s( n# j( w二维码技术成为手机病毒、钓鱼网站传播的新渠道
! G" Y- M1 ], t, ?# F
( q6 w7 Y" `$ g3 H3 h' _信息泄密6 r8 V: v4 N( o' ^
3 c  I6 n; S# i
目前流行的三大国际标准9 X4 `! X8 r; _" c3 G4 h# E
PDF417:不支持中文4 c7 [8 @1 D+ w4 z: E/ F
5 _) E) ~; y$ g+ M$ R
DM:专利未公开,需支付专利费用' T) |+ ^* P2 W

6 i% e8 j9 w6 B% HQR CODE:专利公开,支持中文  V6 O8 T$ m/ l( I0 P. W$ d6 j
$ m: u8 y4 Z6 R. l; i2 V, F
QR CODE 纠错能力8 A) n2 G$ Z, h) h- x" _
L级:约可纠错7%的数据码字5 i! k$ }" d& v' f, Q, d1 w
4 f) Z) D1 S: v
M级:约可纠错15%的数据码字
" [( @) N  e4 l/ D  m
& g* u2 Z8 s3 ?- S" z$ ~& J7 oQ级:约可纠错25%的数据码字* @' J7 J7 N% e- |. h5 a/ p
3 u) _; L: o$ y: O5 o: j
H级:约可纠错30%的数据码字0 c+ U* _: M6 k
* q1 E2 n, _9 W1 \8 ^
前提条件
' |" v4 E% k5 q( R1 ^! QGD库
" @! I6 b4 x! k+ ^) v
3 w9 ?3 ?" N2 f2 K一、PHP生成QR CODE
5 M/ m9 C/ G1 w% z2 }& k% e官网:http://phpqrcode.sourceforge.net/; D3 e. f% ~8 b, |6 V+ E
' T/ z+ e  L% I% T
下载源码:https://github.com/endroid/qr-code2 [5 _9 p6 I$ |: X8 o

8 I2 K+ h/ o+ U5 O目录结构9 u) R( G+ U2 H
9 m& @  }8 H3 l/ L5 K( T! W' p

5 i4 y( x9 u7 ^& G" v1、qrcode_create.php; d) y( F- U( W
ps:生成普通二维码
  V, w4 B1 s! z# v. Z# q& k: |

  1. 7 L8 x( m9 D6 l) @8 J
  2. include_once "./qrcode/phpqrcode.php";/**
    * N+ s! ]0 a, m$ E% B7 e4 ^& N
  3. & G* h5 G  [% K
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    6 Z  m3 Z9 e% ?# |5 W% f* g

  5. * l& z2 o# m4 ]* h$ G  n4 I
  6. * 在浏览器上直接生成一个二维码(内容为abc)4 ~3 o* T  I6 T3 z! R# B, F/ D
  7.   Q) R9 ]0 [+ D% W
  8. */QRcode::png("abc");
    . S+ |# C! J. h# L( _, ~
  9. ' `% n. Y5 t% w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    3 {+ p3 t1 y) R- G+ M4 q, _

  11. ) c9 i, m% y: G  E) V
  12. * 生成文件到本地
    , ^! c9 d6 c; t. @7 Z4 Y4 j2 \) c' E

  13. 8 X$ d' m* n$ D" y: ^! L
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    . N" v6 B& U2 o
  15.   `+ T" E/ O" w% O$ p" l
  16. * PS:$saveandprint源码的p6参数做了修改! r3 ?% w: b; y' \+ G) |- A
  17. ( R' S5 {6 @% P- X; x
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 O& |# A) W. y- l6 u

  19. 5 k( D* _/ R) ~7 u  o1 D. i8 e* Q2 B

  20. 4 l2 d+ _7 w& {, C
复制代码
% ^3 q# n6 N3 ~+ i8 c' m
2、qrcode_logo.php' y$ ?! [* K. s3 O& K
ps:生成带Logo的二维码

  1. ( m8 K5 i, L6 E% k0 c* }
  2. /**, J" `3 D  i" W' x) ^* r9 i
  3. 4 Z6 B: D7 R, @- Q' p, t
  4. * Created by PhpStorm.+ x- \- B6 f5 w6 z3 I
  5.   m" l; d3 q0 o$ c- D3 U, @
  6. * User: user
    . c" H6 A/ B9 i+ D
  7. 1 z" [, D3 T* H! z) l3 i. Z$ A
  8. * Date: 2018/8/16
    * V# u+ {+ r, G, [: t$ @

  9. 0 X; }% u0 Z! c" L6 |: c# o! B
  10. * Time: 10:43
    4 s2 [: k% D: p6 N

  11. 4 V/ Y8 Y- S. V/ D, }/ G
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";( B% @9 ]$ k& s0 A3 l

  13. / |) l6 ^- g5 C  X& ~/ \! L
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称5 f$ d3 N  }6 c- K. [, I2 @$ J# o
  15. 1 U; i' g9 C# p0 l+ v
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是- i8 n* F# o3 C0 `

  17. % w) F% V8 o) T! E' o" f
  18. $margin = 2;//边距
    4 t7 \: ?( P3 |9 _! I8 N1 @' ^! e

  19. 1 T: t1 h  d5 Y2 ]% ~. [7 k
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    2 P, K! j# K- K& v- f- y( r& A2 `6 x
  21. # E; ?8 T4 I) Q. K
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    / c4 i( G4 i+ z

  23. ! V! w: o% J* |" O
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    7 m8 _& [  S! d" }& V

  25. 0 l& m3 e, e$ i9 v- m
  26.     $Logo = './pic/logo.png';   % B+ E' W+ n3 P( W* o
  27. / {3 |3 d* O# Q
  28.     $Logo_re = './pic/test_logo.png';   
    4 X& ~/ ^+ a( [: \/ H

  29. ( |4 W: `- {* f5 m
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   & U* O9 e5 B! F! N- e- f" j

  31. 0 T, n3 I* W* s" y: O
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    . |7 ^6 `. k2 z/ m% @7 }

  33. / q2 X" [- j: H, R
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    : z1 q5 r* x- q; A( X8 e& W+ ^

  35. : U+ Z9 {! f3 @% e
  36.     $QR_height = imagesy($QR); //二维码图片高度) I5 D& E. D5 F) m, f9 z
  37. 9 Z  [. ~# D& m; t% L. i3 p) K
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    6 s( `" [: D6 F$ A

  39. 0 {, Q% f9 C3 f1 N; B, h, v% v  k
  40.     $logo_height = imagesy($Logo); //logo图片高度0 u* I/ E/ Q( }  i/ B

  41. ; d! o, G, f8 \( o5 d2 k9 `
  42.     $logo_qr_width = $QR_width / 5;   0 b5 _5 o7 f  q( f" J) H

  43. 8 z, p6 b! e  X3 s
  44.     $scale = $logo_width / $logo_qr_width;   5 T! z. f0 U! c! G; N  }+ I

  45. 1 J& f  N, U4 C, R% g& g9 ]
  46.     $logo_qr_height = $logo_height / $scale;   
    $ H" {" w3 _% t2 N
  47. 0 H# r& f  O! d' J' x$ a# |  D9 f
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    . d' ^/ ~: i7 v6 c2 z9 g$ ~, X6 w
  49. , @) f" c& q! i; Z8 R/ w/ R* M  f
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   & u6 L: A$ c7 H
  51. " x4 I& ~5 N! ]8 |, V! _) M' F
  52.     //输出图片
    7 _) p0 K; h' }" b' X% u

  53. ; x- _1 v" c6 ~9 g- K! D) N7 r4 ]; S
  54.     imagepng($QR, $Logo_re);, @$ K  P, T# Z$ ~$ E/ d. }
  55. / l0 p, S) |, k
  56. }
    & b0 k# r9 C  w8 T

  57. 1 o0 w& h2 N' x4 c4 T. D& e9 m8 a
  58. + s; |9 g2 ]2 W* \5 T  c6 j( P2 q
复制代码
3、qrcode_vcard.php (生成电子签名)
  a( p) z/ a! D
0 g2 w- F* T2 e% R0 E, _" I2 ovCard格式:https://zh.wikipedia.org/wiki/VCard
( u$ h4 Y1 b4 s4 l- j- V+ L7 n" a8 F  ^

  1. # ~+ F$ E- r& k) B7 @
  2. * Created by PhpStorm.& ^( l: D7 e4 A
  3. 9 c5 B- W# s0 b8 u4 j0 O- ?$ `& B
  4. * User: user5 x1 M1 R8 e% p) W. X: ^+ M4 d

  5. ) L6 }. K; ~' \8 ]( d
  6. * Date: 2018/8/15- f; H  |+ x1 |" w3 J7 K- ~8 g

  7. " A, W; W5 N1 t  z2 T
  8. * Time: 23:00, X/ w. C- L- X8 M+ x3 Q* a6 d" p8 p

  9. 8 u$ U( X7 @" g: ~4 V/ x2 z
  10. */require_once "./qrcode/phpqrcode.php";/**# P# t9 Q3 J& y8 U, ]

  11. * C, I- Y: ?  ~6 i4 P
  12. * 生成电子签名
    / \, O" J$ D9 K- i( i

  13. " Y( X& t, L- l
  14. * PS;使用微信扫描二维码
    & k! h; ]/ k, ^0 A* w- Q/ y
  15. 1 Q* w2 ?* N2 n4 d6 y
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    + e$ w/ |3 s8 }- F

  17. / n# \% x: ]; _/ O. ?" {; X
  18. $content .= 'VERSION:2.1' . "\n";//当前版本/ y. F% Y3 H' M, R
  19. & @/ {% o  f- f$ \0 K8 n8 j
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    0 E) [7 }0 Q! C7 e. e8 G& a
  21. 7 J( v  W5 X3 e: ?' Q: N, |
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称+ S# _% S7 e. t6 Y

  23. " A$ Z6 w# G  K3 U3 Q9 D6 s: H8 g
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 ]; F2 Y3 f$ R% q. Y# V

  25. : x  K% t8 E6 e
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话3 u2 t5 @8 c' ~: V$ x7 H2 p; Y, j
  27. $ r6 O3 g; N2 k  m
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    : w0 [/ |8 k& R! G
  29. 6 I) D1 B( y7 t& t8 o
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ; W/ f1 X$ P, d1 L1 Q& u
  31. 7 m# D. ?1 d9 ?
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话" S+ ?9 N8 u7 S) b- [

  33. * N# F/ B$ |- f- T& q
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    + l- {0 W3 d+ G

  35. ! p' [6 o& z) O2 i. ]
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    7 {! j# K) S5 Z4 y2 v) H

  37. # ]: [( i1 P% w7 u8 y
  38. $content .= 'END:VCARD' . "\n";//结束标志
    2 ?" O  N" ~' s( N* J; o$ o2 L
  39. ) O& ~# D* h0 L3 k
  40. QRcode::png($content);
    - w+ {, _: m2 b8 w+ M

  41. : r$ H1 l2 n- n0 u2 x2 H/ }  [, \0 d  p
  42. 4 U1 K7 H: ]; }3 S
复制代码
7 m3 N$ v. Z/ r0 f+ f
相关文章推荐:" O& {% |# H+ z. J
1.PHP生成微信二维码实例4 P. p$ v- g: ?0 ]* `3 F0 X
2.php网址转换生成二维码4 X/ X1 Z( j' V" ?
相关视频推荐:
" r5 e, ~/ T0 y( Z- Q1.独孤九贱(4)_PHP视频教程
' {9 L5 l2 d2 B/ b二、JQUERY生成QR CODE
! F3 L( A, ]% k& f' U7 B" b源码地址:https://github.com/jeromeetienne/jquery-qrcode
5 Z) V+ P. O7 v+ H% Y6 L, U( }9 O5 S, y2 y
+ l4 z) L1 F& g9 f% ]jquery_create.php
- o8 C/ L0 i" j
! R3 h+ ]( `, R3 w* i
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

) S9 E. {% Z4 M: Q- ?/ K0 I% k三、PHP识别二维码3 H) A. P/ q8 d4 c. f
1、方法一- v' ]( F3 d# C7 J4 K* F1 |
环境需求,安装如下扩展
+ Z$ `# ]) x- V' l- ImageMagick
/ J- i. s: n$ x2 D# N. M! g$ E- zbar
! ?+ }/ d# F/ J  K% N- php-zbarcode/ E% x* [; n9 G0 v4 g
2 N! b0 f6 e! g/ o
2、方法二1 C: [6 t" U  A2 E' U
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
5 S0 l: |7 d& ?. j& _7 e  AqrReader类:https://github.com/baagee/php_QrReader
' g+ p# {- ?. U/ S  a0 s8 t9 {% u' k) v
  1. 6 i! x* ~+ [9 o$ ?- V
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - ~) b. t2 O& r$ f& n# g
  3. / S4 G: D( K( b1 X, G6 K
  4. $text = $qrcode->text(); //返回识别后的文本
    5 c1 u, n; Z4 l

  5. 9 _' {3 ?5 x* A* \0 S$ V
  6. echo $text;
    $ e+ E. C, C( r% v
  7. 8 H- B5 p% T; e9 S/ [

  8. 3 F9 S' g: _# C5 u& R) V* N
复制代码
1 Y6 W5 N* l: k$ _, i/ p0 q5 C
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7: X% U" r6 n# t/ ~% [# e
. [# N! o1 _" d. e4 M
' g+ H2 ~3 j* C7 Q3 k

" |" d8 j: J6 j- ~5 N; @6 f* f9 X6 G: M1 o$ r) I" }) y

$ y3 r; c) u4 }* H% {6 P" d- v
0 g# Y6 @3 Q1 E
- H8 s2 ]& t+ [9 e: e( j) Y; R' [  R2 [( @
2 ?& j$ y( Z: p( K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-21 20:13 , Processed in 0.169831 second(s), 24 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!