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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
8 z+ p6 N9 U2 d  Z$ T---------------------------------------------------------------------------------------------------. u0 y8 O7 W2 R: T9 `
二维码的分类  S$ W0 i; O/ w( n: }4 M) i. y5 i
线性堆叠式二维码5 {1 n" k) W5 S: ^  w
# y1 J' X0 u2 M, {$ W( a7 }. t. j
矩阵式二维码" ~$ d, W- N! [. C0 |1 u3 {
$ a$ a9 i% K0 |
二维码的优缺点
# V# Z3 J1 |6 J0 K* g2 p& g优点
$ z8 q0 o- H9 \/ S7 h4 y信息容量大
6 z5 ]3 y( s  l, E  z$ K1 c% w+ T1 k6 [
编码范围广
) x1 j$ ]0 z# K) C+ x5 i% S
& b6 n# B0 Q  u( q6 b3 U% R* V容错能力强
0 J1 N; o9 y9 {* c0 ^6 |- \* l4 D5 y6 P
译码可靠性高
& Q5 m# g! T" w/ Y2 M; d  y3 y, n" Q) j1 h5 \8 H& Y  ^  I
可引入加密措施
* Y/ l1 M! O7 e8 u) }7 J1 G% s' f; m1 I; j) D1 b$ R
成本低,易制作
: c6 R3 `+ k+ E/ B0 B% O$ e/ q) f$ B9 x- [; l6 {
缺点
5 F1 p, a) l% N& I- ?二维码技术成为手机病毒、钓鱼网站传播的新渠道
# d* ]. A# ]! A
* R0 \% b- a  `0 H信息泄密
6 ]" ^9 ~% j2 g; i% T
& _! B0 Z) G1 z; l1 l& R% }, z目前流行的三大国际标准
0 D& o: v+ A1 \PDF417:不支持中文
. T  P! d* }. J% U$ K5 J; I. x) W8 D4 p( J
DM:专利未公开,需支付专利费用
  K" Q% o3 V' L6 N' O! t4 i  J  K" z! }+ s5 n
QR CODE:专利公开,支持中文
% O  X4 |7 B/ ~! S( V: U& d  X5 L" y" u7 W, \8 K
QR CODE 纠错能力& P/ I1 [* T. l2 J/ o! \  n
L级:约可纠错7%的数据码字! {' i) _9 u4 m+ u% U, x

* N, `" a" q6 D& c  iM级:约可纠错15%的数据码字1 i3 C' C5 V" e4 f7 s
) Q5 P# X7 B% v- M/ ^: `# Z( \
Q级:约可纠错25%的数据码字" F/ d% ?, d' I% }) o% `2 p9 J, @

0 A% j- b) O6 v4 E7 Q0 h8 B: RH级:约可纠错30%的数据码字
# O$ }: U' n4 n7 _' h  [
; G9 X9 c7 j' E9 c3 Q前提条件
3 M7 V! u) \/ F  ~8 @* }GD库  B' g  K3 k- R' x1 K+ e
' x; U2 T2 Y5 D# N
一、PHP生成QR CODE
. Q+ K1 h' I0 n5 ]% `: n官网:http://phpqrcode.sourceforge.net/
5 P/ |% C% @) A; `
$ k. Y* k4 Y. @8 O& |9 \下载源码:https://github.com/endroid/qr-code
5 P& j* v$ @1 R* m$ z: n7 ^
- |7 \( ?# ^9 e' N8 l9 B) U2 x目录结构, v1 h$ K6 U, k: ~* C' C4 d

. V- G& p! R: w! |' }
" C1 `1 `1 B& J) E- z4 c1 p2 n" O1、qrcode_create.php1 Z$ j) @7 Z- C( W7 S  \
ps:生成普通二维码
3 A, i9 E8 G- X& x
  1. ' N- V0 \: S4 T1 X, K) Y
  2. include_once "./qrcode/phpqrcode.php";/**
      P% G3 y% o. R6 L. J1 V3 r

  3. ! A" l; l! g# E
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径+ x0 @. D  `: R/ q( t& `

  5. & O4 r/ h& v1 U/ X, w* \6 W8 [6 J
  6. * 在浏览器上直接生成一个二维码(内容为abc)8 `0 \5 v  H+ R; O& \5 _
  7. ( y3 R& S6 t, e- w: P7 S/ s
  8. */QRcode::png("abc");: W' b7 v: l/ X* |+ c
  9. 5 _* i9 v, }+ n2 V0 I3 ~$ Z
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    5 H+ d! w, \5 w! O

  11. # i( h, }! R+ f& v8 {; H+ }1 B
  12. * 生成文件到本地
    - S" x' g% A: D" o

  13. $ k. g1 h/ K3 `. Q! p* d8 ^
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    & D; P: ?+ M$ w) G+ p
  15. 4 \% h9 b% X- E' s! @0 ^
  16. * PS:$saveandprint源码的p6参数做了修改' Z  j( o3 L# }/ ^! R% V9 @' B

  17. # ^1 e3 M: u9 S# }  X
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ( J3 |0 q3 c' O2 ^/ ?& I5 E
  19. / S( T' o2 ]8 U1 m, v* g
  20. : l, C% ?! J( [5 E- O
复制代码

/ Q9 S0 T- |) {2、qrcode_logo.php1 ?& M4 q9 j( T# K
ps:生成带Logo的二维码

  1. / C7 e" y. Y5 h
  2. /**  n) ]* a( z, X" |& J* T

  3. 0 s( S! c" x0 H) U# w; X* t3 @) T
  4. * Created by PhpStorm.
    # [9 P5 G! ^, p

  5. 0 {. {9 I8 v. z6 ^1 b6 x
  6. * User: user+ V& t2 s3 y. k

  7. 6 \1 u% Z$ p  ^3 ?$ f" L
  8. * Date: 2018/8/16- @; X5 E8 H, @- l; C
  9. 1 B- \% V( [& G- w
  10. * Time: 10:436 k* z9 i8 r$ s2 E2 @" Z3 i8 c5 N
  11. , I0 B! ?  \2 f) q+ q" K; g
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";3 K# T5 w0 m. p2 ~! V0 q1 d$ L
  13. " T! d$ R+ e* U
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称9 F+ N0 m, c+ i* W+ F

  15. 4 T! Y$ t9 x% B
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是4 M$ k2 K# f0 j

  17. ; n. k- O( q5 L$ d: I
  18. $margin = 2;//边距0 v# k/ p  O2 ~, S! m  e2 W0 }

  19. 9 U+ O1 V$ T* g/ R0 t/ F% ~! j9 Z
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    2 ^1 B# y- i; {$ O2 V9 e: ^
  21. . M. j# G  W: \" W
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   % X9 g9 q; X# q( n4 ~( i4 u
  23. & b  l$ B8 @" y6 `. f- G
  24. $QR = $picPathAndName; //已经生成的原始二维码图4 B0 L0 Q+ |- E. U( d% Q2 p
  25. 7 S# H7 d/ z1 F/ q% G" u6 c
  26.     $Logo = './pic/logo.png';   3 M; C. L0 z/ A. g4 r$ ~! z# b

  27. ( j8 Z  L6 B' I5 a. U; a& q; L4 M, W
  28.     $Logo_re = './pic/test_logo.png';   
    * p6 p4 K# I3 H1 D% J5 Z

  29. 2 O' |" P, S2 ?, Z: L2 u1 M
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    & a- x+ P& i7 s2 O2 O3 y* F

  31. 3 h  d: N1 m/ B8 {: d% i
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    7 p! `% i' }: }% S0 @- Y) ^' q! S. O
  33. 5 d& k$ t" n  F! X4 m0 {" x! s  f$ |5 ]
  34.     $QR_width = imagesx($QR); //二维码图片宽度+ I; ?, j: O2 i/ V6 w4 }9 K$ Q

  35. ; u# E: b8 v  d* e$ P2 l: v- P
  36.     $QR_height = imagesy($QR); //二维码图片高度0 y3 `. n% m) c7 _

  37. & J. J. t: u+ _! l+ p& y! o
  38.     $logo_width = imagesx($Logo); //logo图片宽度* n7 S1 F0 L" N' \' S

  39. $ ?/ o7 p: q; R" s  N
  40.     $logo_height = imagesy($Logo); //logo图片高度
    + x# n+ `% ^% X1 F- u6 D. C; x8 H! b
  41. ! N- Z- @4 p0 p; V9 i* o+ U
  42.     $logo_qr_width = $QR_width / 5;   * i5 y4 S0 A5 }) m$ n
  43. / j2 ~. J, ~7 G0 S) G( o
  44.     $scale = $logo_width / $logo_qr_width;   ( X8 P$ c; O& o/ I
  45. 0 E" g- Y: u" m" [7 a
  46.     $logo_qr_height = $logo_height / $scale;   " q* B+ q2 V  B- k0 J* f
  47. 9 e& N" z  v# Y1 X
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    : P& R! t4 g) `$ q* n) }5 T6 w
  49. 1 k& a. L# d4 @
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   * L9 X$ @; V) _- j. l

  51. : {' O6 h- y+ r# o
  52.     //输出图片# [, O- P. S( z6 |$ l- P$ [# b
  53. 0 y" W& b8 W& G: `
  54.     imagepng($QR, $Logo_re);. @. r# a: `) O4 w% U) F, i4 J
  55. 0 E+ q3 D* ?3 O3 _! W! X
  56. }0 {2 ^% c5 d2 u( R

  57. + T( o& y4 L$ `% E8 n/ n

  58. ' n" _7 m- `% g& \9 h
复制代码
3、qrcode_vcard.php (生成电子签名)
! y9 n' i. L) P& t  Q5 g" d5 a  `9 a! R
vCard格式:https://zh.wikipedia.org/wiki/VCard' ^; S1 c6 l0 |2 U
) K9 Y$ H8 U3 F$ k, o/ m' p( H

  1. * m3 j0 D( |# d2 F  i/ Y
  2. * Created by PhpStorm./ r4 }$ v  V" n' h" u  N

  3. ' A- N' N7 T7 o( U: R6 {
  4. * User: user! X4 u  B8 G/ \0 H9 O- L
  5. 2 X, _- K. E& w, M6 ^
  6. * Date: 2018/8/15
    * n' W6 B9 {; k
  7. 4 T  x) d/ s4 B# J3 }" U/ q9 e% p
  8. * Time: 23:002 s1 S3 M7 F- `/ z
  9. $ u9 S: G* j8 |0 E( O  T5 ~
  10. */require_once "./qrcode/phpqrcode.php";/**
    & b6 K1 T5 j1 o9 j" N  }- T$ t3 s

  11. - {* H$ Z1 E) |1 u# x2 ]1 T
  12. * 生成电子签名6 m, {- ]% S: A2 x4 n( H/ Z
  13. $ W" g* n! A0 ^  G! P$ A- W
  14. * PS;使用微信扫描二维码2 v, V  r  Y; q  n9 l

  15. # Q6 g( }" U& @5 c$ L3 s) t
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    3 H! S) G! j/ Y7 |5 G/ I" `# c

  17.   s- j0 s/ F% }6 H2 I: \
  18. $content .= 'VERSION:2.1' . "\n";//当前版本" @* R& ~: t% y- H# r

  19. . y" o' v, d& O3 N; v" `6 v- ^
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    0 y! k0 @' i6 m/ R
  21. - d9 J. ^/ z1 Z: w3 g5 j, W
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称' N6 r& p- C% D
  23. 7 ]; n8 }7 k  }
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位: @0 R* w" Z, [0 x6 ^2 Q

  25. & q2 C8 \  O; p  I4 w0 `8 ]9 R
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    4 O9 ]$ F  k2 G  r2 Z+ D+ Z- W. b
  27. 1 P2 `  I' i2 P2 H2 K
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址/ ?& s& j& E' T0 L5 J

  29. 8 W& o4 \. I) V$ D
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    * u' d2 O( @! o3 y7 @( O
  31. " H! n' N% e" A* x: j2 m
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ) R$ F% n$ ?1 a& e3 h

  33. - A: D' R; R* o8 i9 W
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱' _+ J" ~& q. g1 @0 t. [* s/ p+ q
  35. 4 [0 y- M- l/ B0 c0 V2 T8 r
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页) p" x. U  s0 R
  37. 0 Y$ H  e; `' N4 H/ e  k' r
  38. $content .= 'END:VCARD' . "\n";//结束标志
    3 g; A8 [9 @( ]) d+ {

  39.   V7 A# K: r8 }9 U
  40. QRcode::png($content);
    - u8 [4 f: [2 R+ l( q) h

  41. $ Q7 o) V9 H, h6 a. W9 }+ |* z
  42. / ]5 [4 |' Q% ]/ L+ a
复制代码
4 X5 T% b( b+ C4 c2 v
相关文章推荐:! @# E& t9 ]; m5 F0 n3 ^) j8 V
1.PHP生成微信二维码实例
% E4 e( K' h9 w7 T2.php网址转换生成二维码
) f* c0 j  e5 r5 ]4 Y3 z相关视频推荐:
5 d" H/ g8 F; ?- ?1.独孤九贱(4)_PHP视频教程1 m7 I) b& @* M) j& U" _0 j; V
二、JQUERY生成QR CODE. c, [% t0 w9 V! I9 M
源码地址:https://github.com/jeromeetienne/jquery-qrcode. u% A3 A, a# p% c& a
; v) z" P, i, ?$ ?8 m# _- D
jquery_create.php8 e" q. }3 w8 C+ z3 V0 O$ `
1 b, U0 }; g: ]! a" ]! J& c
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
( L6 j. i8 r* q9 I' \, u% y% |
三、PHP识别二维码
9 }3 f! K- }4 W( r  e1、方法一. ~, _% @3 s) v1 v1 S2 c  J
环境需求,安装如下扩展
* {' [$ G& k4 d- ImageMagick
( t1 h% S/ K7 M+ i9 G- zbar
2 e, r* c8 T* T! e- php-zbarcode
# e1 K. N9 I) `
1 D$ |1 N/ o* N# {7 Q1 c1 C2、方法二
$ j% `7 s% n1 i( j+ [1 S+ g3 t5 }8 iPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以2 S) k3 |% B( f; w) d
qrReader类:https://github.com/baagee/php_QrReader& q2 k* N4 ?" W6 N4 q8 Y# m! }

* R/ O( `( N- w: q, Z6 B
  1. 9 b4 E/ x8 \$ N! Q7 R: u
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    : C1 B. d7 X; J  C

  3. $ V( @. O/ L5 E1 M9 A- v
  4. $text = $qrcode->text(); //返回识别后的文本
    ; W) {+ i6 N8 H: a$ _: r! i

  5. 1 P1 @" k" L  g: b9 O! x# o
  6. echo $text;
    9 b' G5 c$ W3 K$ E

  7. ( m! g( [+ T( ~) W/ d! [- U

  8. ! C/ B6 n* `3 G; `& _
复制代码

) W5 j+ m0 e8 N1 q链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
$ Y  Z: r0 k! [$ O0 K# {  T: K! i3 P! C6 E5 c8 g

' h) H. X- G. \# M6 F! ?3 v
0 O2 L5 v$ g" y4 @. {- k
/ S: ]1 {6 E" _' J: }
. z4 j+ d- x% I6 j% z+ |' O  c" B+ Q

, z& s2 m1 E, k4 ]% g; I
: |: W9 i3 j) u+ M/ x% P; X3 a/ u' k- x' e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 21:08 , Processed in 0.070314 second(s), 23 queries .

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