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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9768|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 z8 b9 E9 N, Q9 U! a7 c9 H+ I" \4 n- X---------------------------------------------------------------------------------------------------7 s* H5 g* x$ x# Q/ J" t
二维码的分类6 O6 z: B3 Z, ^2 F% ]( V7 ]
线性堆叠式二维码
& ~9 W0 {! ~  J  l$ i; h  A' T' L# V% m' S& `) r
矩阵式二维码
2 y$ p7 i% }* H: s  h
  G# T: h( E; V& P7 g$ `$ W二维码的优缺点0 ~1 i8 T2 c. l! E% _6 c. L
优点
6 `5 l$ p( }+ p信息容量大! ?4 f4 c) S% t& u9 k6 D
& ^, E. R# F. w& a2 [, ~+ d
编码范围广' `. z) p/ S: a# N9 p- ?- ~

) G' D7 i  H6 k8 \7 A容错能力强
2 e2 Z  G& m$ R- q- r6 S
+ j" `3 n8 T" t- Y/ V译码可靠性高
+ A, G1 ]7 k2 T! A( A1 Q+ T8 U: N4 i, ~' [9 \$ Y7 w
可引入加密措施2 m; V0 Q4 D, H, l% Y
# W0 t; J( @1 [5 ~3 A
成本低,易制作8 t+ W( N2 Y8 R8 S7 I
- I; ^: i  Y1 S
缺点
' H6 i& s* D' }/ C二维码技术成为手机病毒、钓鱼网站传播的新渠道
0 G3 d/ ^2 T9 l: t2 V1 G$ H: @  L
信息泄密
6 t% F/ k# Z( P& c- w/ [% @8 p$ T3 d7 f5 `0 ]8 P
目前流行的三大国际标准
# H5 L# Q4 s" |PDF417:不支持中文- N4 z! l* I8 |8 e
/ r8 ]' y* c/ i, l; Z; m" B
DM:专利未公开,需支付专利费用' z* I- J8 j6 K+ {+ @
5 i) P0 @) y: L3 i8 h8 H
QR CODE:专利公开,支持中文
% a5 K; Y  e$ J: P$ |
( C& @! k4 O6 WQR CODE 纠错能力
9 }4 `! B5 p/ s  G; lL级:约可纠错7%的数据码字
1 \2 M3 V+ g1 ]8 E/ Z
' v3 v# x" y7 S6 O/ v7 A$ l2 E2 o1 VM级:约可纠错15%的数据码字
8 ?& i5 ?7 m! B9 U) ]- K0 k. k7 C! ~2 G/ Q2 Y) }$ I$ ?: v
Q级:约可纠错25%的数据码字" |6 c/ c- W+ z- d" B: K7 w$ v

# w: N( [$ H- i2 `9 n5 |3 qH级:约可纠错30%的数据码字; A. ?8 B, O, O& {0 G3 x1 V

+ c4 ^$ j8 ?" @: L; S前提条件4 c$ ]! I0 q, n2 ?4 P* ^
GD库# ^( J6 d" ]& k& l: Z1 m, K' U, }

* J5 y% A0 u7 Q4 |一、PHP生成QR CODE
( g, ?' N4 T! i7 K3 D官网:http://phpqrcode.sourceforge.net/
& P& G& k% `2 ]5 c! r( K- o2 Q0 V; i. y* }# n2 @
下载源码:https://github.com/endroid/qr-code! X  Z7 B6 h& t- ^. o# X
* R- w2 E3 A1 S) j
目录结构
, r* {6 O0 E7 M. i  [7 ~7 q9 l 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
9 r/ j# g1 f" a2 ~  N1 {2 K
5 y% `- P7 |. `9 f# Q' t: @( _) j3 @1、qrcode_create.php1 j5 |$ {& l5 s6 D
ps:生成普通二维码
, D) Y2 g6 q2 }) C& u. f

  1. 9 A2 _& f7 b  X' I" [
  2. include_once "./qrcode/phpqrcode.php";/**
    ! x8 L5 @8 {" Q4 t' x
  3. + G5 r% F+ E. j3 S5 h( a& R1 R: M
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径6 u' k+ C9 b5 a% c% f" t  Y6 [# A
  5. 3 {0 e3 g" R5 |9 p7 m7 r% n
  6. * 在浏览器上直接生成一个二维码(内容为abc)6 {0 O  Y. y! D3 L9 W( S: G( V
  7. : ^* p; Q" x  J
  8. */QRcode::png("abc");
    4 I7 \% Q! j$ G1 s- f
  9. - ~: r( z3 [, c- P5 o: L( }
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    % u: C3 R3 Q" x% j3 |
  11. 9 p5 K+ s2 p7 y
  12. * 生成文件到本地
    ) n, Z% l8 u8 U, l( z8 q6 ^
  13. ' k/ [4 J. C/ P* s( h- k
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    : u  J* K$ s5 S# w( V6 }
  15. , s+ C) o& f8 c/ e4 b8 G
  16. * PS:$saveandprint源码的p6参数做了修改. M: l6 y* p. ~6 o
  17. 2 U9 n* p' e8 R, e
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    4 c2 z% A  S( I' P

  19. 3 y9 e, u" z/ j: m2 `

  20. ; a$ p1 y7 E- e5 u2 ^& I
复制代码
' i" ^' O. n5 I# C/ Z! C
2、qrcode_logo.php
7 n8 h$ _7 P# B( P, x5 Sps:生成带Logo的二维码

  1. 4 R! z) j9 \! t: v" v
  2. /**
    # M' v2 t9 l5 `, L% P7 `5 x( N
  3. : [( T- e. e. g
  4. * Created by PhpStorm./ c2 M3 o+ h! E" _% F# M1 _, @' S
  5. ) x& i: m  Q' Z5 C
  6. * User: user
    , _# z* ^4 s/ `, \+ [8 i) X

  7. ( b7 ~/ |8 V7 u( z, |  \
  8. * Date: 2018/8/16
    5 t: H( g4 ?2 p! d/ X/ O

  9. " |6 m  c) c6 H4 C
  10. * Time: 10:43
    $ Y% M  a5 B) M

  11. & @/ \( W0 O( n" S
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";. x7 S: l: h! T/ P

  13.   ]& V% i3 Z7 g8 P- ^* x; e: n
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    4 w- [8 k7 d! V2 K& n
  15. ( d" y! ?, E1 o, X* d/ L
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是- Y: G6 ~( P: H3 b6 d
  17. . A2 Y. R8 Z8 k6 f" @+ ]
  18. $margin = 2;//边距) M4 Q$ C1 S4 J; U/ V: k
  19. " Y# I/ h$ f8 y# q" @, i  U
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 Y" U/ I# I7 `" k5 i7 q
  21. 5 T7 [9 f* X  }. V- F
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    : s7 D2 |& l) y) n

  23. 8 T  |3 j5 a! v6 i8 ?2 A
  24. $QR = $picPathAndName; //已经生成的原始二维码图5 J+ j6 n9 U3 u3 ^+ a( \( t  G

  25. 0 j) |) a3 ^: X  d
  26.     $Logo = './pic/logo.png';   , C& Y% c  j& q8 }3 n: I1 F

  27. 1 F1 b* Q. e( Q9 d! E
  28.     $Logo_re = './pic/test_logo.png';   . _2 n5 c. ?' N9 @

  29. 5 q8 A7 w$ M* |' m8 t
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ! N$ n' V9 d, U5 T; y  z# ~6 u
  31. 3 D3 f! p( @$ G
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
      h6 e& R* ?, r4 o+ Z! c
  33. / @6 s' O- H" C, ~$ T1 M" c
  34.     $QR_width = imagesx($QR); //二维码图片宽度6 S: i! B" r  M# x
  35. 5 x0 a4 h  M" @# x) D
  36.     $QR_height = imagesy($QR); //二维码图片高度/ `+ n7 ], c9 l* P  D1 Q  |* D- Y
  37. ( W5 }! z6 A' X4 D
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    1 W8 {& U1 n; M& J
  39. - N% r; S5 j9 M+ }% A: Z: i
  40.     $logo_height = imagesy($Logo); //logo图片高度
    : F: x& [) {8 R0 P# ]
  41. 8 n  R5 }7 Q; U8 g
  42.     $logo_qr_width = $QR_width / 5;   # e) v& \# @# y, |: a
  43. 5 Y1 d! O$ H$ X6 v, G9 [! }
  44.     $scale = $logo_width / $logo_qr_width;   
    ; _4 P( a8 }, ~

  45. ) J  @, G! f0 N  b0 K' x0 j7 t; ^* W+ v
  46.     $logo_qr_height = $logo_height / $scale;   
      `' J" R6 E% ]% k3 Q

  47. # V2 _0 }! z4 T( c" H4 v1 E. M. l
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    6 S' o) p5 e) h- V& H/ L' p# \4 u$ L
  49. * J8 j6 \: y1 v; d
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    # I! P0 V* h: b. |1 i" h

  51. " l% t" Y, ?4 H3 J  z+ E
  52.     //输出图片' Q* ?3 x0 H5 x7 V# x6 A

  53. 3 e* [  U/ A: i; q2 L+ [8 M8 f* P
  54.     imagepng($QR, $Logo_re);
    # Z0 y6 R7 O, w; C& _; t7 \0 l& q

  55. 2 Y$ z& b0 ?: s& \  t
  56. }/ i) {/ O) Y) W; e# ]! P/ y# D
  57. 7 G/ L6 t' G. J( [
  58. 3 Y- r9 ]* p7 k: U5 S; ~/ }: d$ t
复制代码
3、qrcode_vcard.php (生成电子签名)
2 G; x/ H! x& g8 W  X! e% j3 e! T: j: U' |9 d9 _
vCard格式:https://zh.wikipedia.org/wiki/VCard
& y/ J' R" a; b! ^" }- \. s
  E. q, O* k5 p6 k; M2 W. O+ T5 O1 f

  1. 7 G$ ^  A1 }- I1 N; x
  2. * Created by PhpStorm.
      v( O1 B0 n+ e- {# w
  3. & w7 F  p7 |& Q3 v
  4. * User: user7 n* k. H9 C# U$ f* T
  5. ( P8 L1 Q2 Z' [" m% N: z. a9 J$ s! S
  6. * Date: 2018/8/15) F, P3 K) }/ g* n  A

  7. ) o+ O* `$ b; _/ ~$ ]1 ]
  8. * Time: 23:00
    $ _2 t' h6 D8 p' L: j0 @

  9. : p) X, v9 W* v2 v6 B
  10. */require_once "./qrcode/phpqrcode.php";/**5 ^$ w- ~1 ], g; X2 h
  11.   Q9 |( a# r1 w0 m- [8 O8 |3 a
  12. * 生成电子签名
    " ?% B. N3 d3 s
  13. 8 q$ v) W8 J) h# n" I
  14. * PS;使用微信扫描二维码, N! z9 t5 O. \8 Z- G- E! V

  15.   Z) w8 x8 T( v& K  a  M7 \. f
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    / d5 G" S$ f. U7 T  i1 C0 ?; b

  17. 1 S0 v* I/ {* z9 J
  18. $content .= 'VERSION:2.1' . "\n";//当前版本5 \4 o. ]# @! J/ Z2 u" R' I( K: d# ?

  19. / |# f0 d- R2 x7 N/ Z
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名+ M9 \3 X. u2 \$ q

  21. ' V8 {  N: ]# k9 g1 g
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称; \1 h9 a  C9 @# f6 q3 Y
  23. 8 C, n+ P1 P* S; Z$ P$ ~  ^2 d6 n
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位. @8 _( O4 K7 H8 H* }9 A
  25.   P4 m, M7 `  G5 p/ T
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    0 p) @9 v. E$ E; H9 n

  27. 3 B1 r$ m7 i" [) V
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, ^7 W' P+ S' Q) `2 @) r+ Q* e

  29. - S  w* U; J8 E7 f0 C' b' t
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ! A, i* R+ z* F( B  j' n6 V
  31. 7 j- ?; |6 s7 B% O( z) C
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    5 H- O6 p7 q* h# }, p# Q

  33. # F: ]5 v6 k/ r7 n/ y
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    4 M" M0 X5 {( e' A

  35. 1 e2 @1 w6 z) @  j5 X2 F
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页$ w# U- A, {) r; |" q( R: v0 _1 o

  37. ' B6 z" }& G  _0 a' h9 f1 l0 {
  38. $content .= 'END:VCARD' . "\n";//结束标志$ v  y8 j1 a# j& j

  39. 7 l( p" ?* b: s* ~
  40. QRcode::png($content);
    8 f; d6 ^$ s1 m; y+ g
  41. ! T: O6 F6 E  n) ?. m

  42. + A1 k: {7 k7 ~; L  _  W% r
复制代码

9 s2 R2 x4 n# w0 h" b相关文章推荐:$ W$ T( R" T& ^7 r- J
1.PHP生成微信二维码实例9 W. J9 i+ n# d% T8 e3 X- ^
2.php网址转换生成二维码, D$ H4 k0 Y; K9 P
相关视频推荐:  d* L5 b' j& v( ~* c
1.独孤九贱(4)_PHP视频教程
* K3 O6 A, p- C5 L9 q二、JQUERY生成QR CODE, L( H/ N2 `# Z% }, h- ^$ h0 y
源码地址:https://github.com/jeromeetienne/jquery-qrcode
& w- c! L$ P$ S/ C8 F
& `+ L" K& U9 N1 M) `jquery_create.php; G! |. ?5 }/ T! D
- U1 |4 X2 \6 C8 i; }7 Q
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
5 [# P0 q* B: I* J
三、PHP识别二维码
4 g1 ^, Q/ M' B+ o5 P( ?1、方法一
8 V4 M4 g' ~* {/ x环境需求,安装如下扩展
! {$ p4 T2 p8 I( o8 K- p$ |- ImageMagick
- n# C1 e) b5 x7 x9 {- zbar* ~' S) A% \3 m0 _7 J
- php-zbarcode4 n8 i  ?, m0 k& S" ?6 a

' W' I0 n! R- r! m. z2、方法二) G0 N7 F8 V% K! k9 [
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( `: I$ D5 U/ P0 d4 dqrReader类:https://github.com/baagee/php_QrReader# h) k5 G- N) }5 p
: k& ~$ Q1 u' y' Q0 N  c" d

  1. : H1 e; s, w! G# {
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
      T9 Y+ A& k! g$ }2 X! B) M, L( s  |
  3. ( w1 v3 D/ |/ K1 T7 g
  4. $text = $qrcode->text(); //返回识别后的文本# F1 H, _* b5 A7 g$ I

  5. 1 U: ?* M4 ]8 k$ [& G: u
  6. echo $text;) I( o4 s6 N8 V( e6 B
  7. 7 c5 N) Y6 ^, ]: z! C5 A/ ?# }
  8. * \3 @! G$ G/ z# Y+ l
复制代码

6 `( `( s! s& `# @3 U0 _1 `& u2 W链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- F+ w9 v$ ~; y( y7 u1 ?$ ^

& d0 b8 _( z' v& b# W8 {3 {1 K  Q3 x' h# |+ O. \- A9 i; \1 m
  n+ O! w' u2 b# k* ?7 @
! w8 B% d/ ?* m3 y

9 Z) H- g3 A  @2 g9 ?6 T5 ~  c- B) y; f7 o
; A$ X5 g, Q) |- ~# J
$ c+ V1 _3 F* U5 f
& v% a) B# g+ {. _" b
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-3-29 18:48 , Processed in 0.163984 second(s), 25 queries .

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