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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
2 S/ W/ D+ u  s" g---------------------------------------------------------------------------------------------------- ]8 g, t: j: S2 _7 b# t
二维码的分类
, W& i3 I+ E7 `# Q  _4 X线性堆叠式二维码
# J5 V- s1 k! U( A3 e1 L( f8 w7 S' Q1 m! U; w3 F! m
矩阵式二维码8 N1 j) ~( g9 Z0 {) n( x, R
0 @! Y- H3 @& g
二维码的优缺点
! ^- V1 p# w3 R" N优点
/ X. d$ U' }5 T* @) X9 P* g信息容量大
. u0 U$ l2 j* O8 N) j. D0 T5 u5 }8 }: |& T( B
编码范围广
* f0 {; e8 w* ]1 Y6 j2 G
+ T3 f4 S2 W9 s容错能力强
- z/ b1 M  C! b7 I2 j: e
: R( s3 y" \; y译码可靠性高
) k7 D. b" a" k$ B1 l+ K1 @
  \" s6 L3 p  E1 l; _- Y可引入加密措施2 g- U# ~& T( x4 g# p1 Z
7 ?1 k5 s0 p7 K  ^: K' a, q
成本低,易制作' p7 h! v4 @' W, B4 E8 K7 n7 t% |; U6 d* Z
) e: t5 g9 A$ R
缺点/ J" @% y! o/ K, v1 s
二维码技术成为手机病毒、钓鱼网站传播的新渠道
9 w& p) {$ O  A& ]$ }: U
2 S3 c: ~4 L5 i1 y* s+ I信息泄密
+ G0 \1 l1 ]0 x1 z
. l& [% r3 B1 c目前流行的三大国际标准7 X; f6 }, W6 D: s+ M
PDF417:不支持中文; ]/ F2 X8 N" Q) p" c: _( K! i+ J
( I. q; [& h- J- P7 i
DM:专利未公开,需支付专利费用
" Z* e5 A7 m  g7 F) H) s
9 J5 R6 x; x) i/ n' ~QR CODE:专利公开,支持中文
: D  @, V" g( L( w# z: T8 M3 D' j7 p& z: q5 ]6 n7 c
QR CODE 纠错能力% M( D! R2 `' ~; E% _
L级:约可纠错7%的数据码字& I8 M2 Q; B, l: @& q: ~+ _/ T3 p

- v) n' a( D- @4 sM级:约可纠错15%的数据码字
* @9 f( N+ N0 f/ C- D9 R
( M3 p. d' @! h- \! R+ Z! DQ级:约可纠错25%的数据码字
. ^3 @) p3 k( |+ e3 r0 n2 [& E& T6 r, v9 q' _5 b% u- f
H级:约可纠错30%的数据码字+ M' h9 F) ^2 j) m5 E" t
5 j" E( x8 B# R  v
前提条件
, P8 c) z2 G$ G: H+ `" Q6 tGD库
: b( t/ t) k$ e. w- @$ j% g: h7 e$ E! U
一、PHP生成QR CODE8 W4 T9 O! h1 Z, B
官网:http://phpqrcode.sourceforge.net/# z& |7 @. h0 T" g/ F

6 h2 V3 k  t$ Y( `7 k3 B. r) M下载源码:https://github.com/endroid/qr-code* p2 W! |$ @% w( m- N) W0 b
0 C/ d% e2 e9 V% J4 ]% @
目录结构6 p' T  X" V$ O
# h7 p2 X/ b& ^( x) h8 x
. W6 q. l; w: O! j" R( r
1、qrcode_create.php, l: Y; F  m: E6 m# T
ps:生成普通二维码
) T7 `$ r% ]& n4 s$ X

  1. * K; B7 ?7 S9 C* W- ?; k2 E2 q
  2. include_once "./qrcode/phpqrcode.php";/**
    ' t! F  T6 j  r5 x  k: B
  3. 7 @4 l) V! F2 C
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    ' R5 C! q3 B4 b

  5. 3 M  @0 g7 V2 \# f9 Y
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    3 `: O* J/ B2 o
  7. / e3 p5 P2 S& B+ C  X" K) J1 Q. C- g, |6 e
  8. */QRcode::png("abc");
    3 u. B1 ?7 X( [1 ~1 j9 {- i9 Q

  9. ; ~  o- k' t) S2 f' F( j6 o
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**' Q6 S, S- N: m7 Y2 {. Q2 X" j6 y, H

  11. ( H+ \" p2 r/ H- n! v: x  d
  12. * 生成文件到本地
    - o7 j. ^% m5 I8 |/ Y
  13. - @' y& P7 C: ^/ k2 R7 R: {( P
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    * i7 B' M' N3 i

  15.   x% Z' }/ p% X9 E# M" T
  16. * PS:$saveandprint源码的p6参数做了修改
    6 j# G% c+ G4 x4 s6 O

  17. % _& }6 B5 q* [# D  O% M) D6 x
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ( m, v+ Z; l  H% q

  19. ' K' |" O, C/ B% f, u9 Q! W( s
  20. 8 `5 g% X3 j, u2 Y7 r
复制代码
/ w% Y$ W7 V: f: w  o
2、qrcode_logo.php6 B. T2 A- G2 B! u! n5 X; Z
ps:生成带Logo的二维码
  1. : r$ K/ q: c# ~  w$ K
  2. /**
    & Z1 w; T# `6 `
  3. , Q2 I6 Z) F  Z% r- k
  4. * Created by PhpStorm.
    1 }: s+ X8 ?  A0 n2 M! w/ s+ i

  5. + c, N0 ?! S4 D
  6. * User: user
    + l2 Z% S; w% b8 k( ?
  7. 1 k2 s' ^2 C% C; ^2 t
  8. * Date: 2018/8/16
    4 p) g% I1 o, c4 W; g7 ^

  9. # ?: V1 k- B/ T- G+ o
  10. * Time: 10:43
    . r, t" L5 y" U, |# P  E1 c+ C

  11. 4 R4 `* o& J- C
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    & i5 B7 I" r9 |4 G: L
  13. + s4 n) ?6 Z5 e* B
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ B2 ~: Y+ _. G4 }& w$ L

  15. $ F, J. H4 d, N1 G
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是0 L  G# p- X- O  z1 d
  17. , j4 |% B+ F5 [( z) ?
  18. $margin = 2;//边距+ B0 q: ?5 @" v% D
  19. 5 w3 D: A, e" A8 G: T' u
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    / e; Q8 {' |' F" e0 W
  21. : I' j8 w( ~0 p% a
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    2 |6 n( G  \& n, o+ {- m) O# Y

  23. 7 q2 Z/ h& D% d$ x0 J1 J& j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    6 }0 |1 U+ P4 u& \5 A

  25. . u+ k5 o+ p) r7 O2 U5 s2 Q, b4 |
  26.     $Logo = './pic/logo.png';   . [8 e, V4 G  i1 `" v/ C
  27. 8 J. m8 i6 |7 @4 l9 j# w
  28.     $Logo_re = './pic/test_logo.png';   1 n/ ?) a+ I5 H$ n& C2 z5 |

  29. 5 K* X  Y. f6 u; z
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   * t' G1 ^" Q! `3 [3 ]+ e3 Y, J

  31. % d3 c/ g- J, k8 P
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   8 r! y- B; R9 _+ \: _

  33. . Z7 |: M5 c$ E. g' w2 a5 {/ N9 {
  34.     $QR_width = imagesx($QR); //二维码图片宽度; s$ o7 I2 Z0 b
  35. 0 ?6 I) k! }6 v% Q" g' R4 u
  36.     $QR_height = imagesy($QR); //二维码图片高度
    + H6 S( x& Z1 O8 J% |+ O4 U

  37. # a* i& E6 v$ V2 F7 H9 j& v) r5 p
  38.     $logo_width = imagesx($Logo); //logo图片宽度- D9 u0 a+ F" n' ^* }

  39.   e; N: ^6 e; V$ V( Q) I
  40.     $logo_height = imagesy($Logo); //logo图片高度: P8 B( u) n& b' y- T5 c2 G( k

  41. 9 L4 o$ I9 b7 P1 `; e6 a  U% U
  42.     $logo_qr_width = $QR_width / 5;   " W& p$ j+ n! w- n+ q& Q
  43. 0 s( a; o3 I/ U; O  R& N" R/ B- C
  44.     $scale = $logo_width / $logo_qr_width;   4 x0 Y  h6 `8 t. ]5 m4 P

  45. : K8 `, X- j2 a& F5 `
  46.     $logo_qr_height = $logo_height / $scale;   
    2 G: _7 s1 X  X5 ?8 I8 o1 O  f8 a

  47. # T' Y1 C0 ]. w
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;- j& b) J! k4 T7 g  T
  49. 9 U2 L9 o* n9 Z8 \, |
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   2 w" z1 j! Y6 [8 U+ }2 R

  51. ) n0 d6 D6 X$ f7 ~, V9 S) B
  52.     //输出图片, P! w: _& q& n) @( F! \
  53. 9 }$ }$ G6 T- l! t/ a+ @8 U; t
  54.     imagepng($QR, $Logo_re);
    4 E0 u% O3 E* ]  @" J( R2 v
  55. + N4 e8 N) H9 {5 d# n5 O
  56. }
    - k( o& H+ j) s7 L) ~
  57. 0 z3 E: i5 H  E# ~( _
  58. * Q; c; G) U6 Q
复制代码
3、qrcode_vcard.php (生成电子签名)
8 t- g0 F8 E* S& a6 J+ M+ F6 z$ {' Q! y3 C/ g9 Z0 ~
vCard格式:https://zh.wikipedia.org/wiki/VCard
; O* A/ P9 G1 P! `9 p1 ]
/ C; f6 c+ k& z# E  L% Y4 g. o1 X

  1. : f, Y, i! A  C( m" v
  2. * Created by PhpStorm.
    " @: y, T5 S( f: ]

  3. ( Y# x2 h& a! H
  4. * User: user1 ^8 o9 S0 k  d& D
  5. , T& ^- d, }( g- f4 Q0 g0 @
  6. * Date: 2018/8/156 A6 v$ a; U; o
  7. 2 \+ w: k' u, ?3 C: i, j1 o
  8. * Time: 23:000 K0 t' Z" T+ U4 j$ C8 P7 O) j" D
  9. - i& b! d* R+ k9 R- i( Y4 J
  10. */require_once "./qrcode/phpqrcode.php";/**5 S8 Q, M/ ?- b- M/ l7 b! F) Y$ f' i

  11. 4 N/ t: i( f: v! [- m: G
  12. * 生成电子签名/ x* y3 Q5 @# P7 K
  13. , C& h3 r' h( a2 F( a
  14. * PS;使用微信扫描二维码8 {4 ]% Y: }/ C: `$ m! E; C2 n1 C

  15. ; b+ o3 x& \8 s
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    , }( b7 V; t" ]3 ?" f$ a$ }7 w
  17. 9 ~' X9 V# l7 r  r5 ^& U
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    7 L# g0 y: q3 Q/ Z
  19. 0 ^# I7 L, K; P4 ]" i2 \
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名8 u1 E8 T- H+ s' c

  21. : x' J- ?, S" ^
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    # c+ C* H4 S1 ]0 X# c

  23. 2 ]9 G, q; ^/ _! t* @/ Z! V: Q
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    9 }* f/ |- ~4 n/ p

  25. 1 J# n7 x, K/ N2 {- s
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    7 u: e( o: S! b( \" x$ B/ V
  27. * Z; M. o" I+ q! V' r5 Z
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址2 ?: `* b' _" c; S/ `9 a
  29. 7 U" ]7 R6 e0 y4 w: s
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    % r, @4 b7 Z1 a. m8 y9 |
  31. 1 L' t- ?( K8 n; n  u% o3 l
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    5 r7 K( V9 B5 ^- a0 T! {7 k

  33. 2 X& ~% O  I7 v5 y6 b- E
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    4 N. _) f$ {  Y/ ?

  35. 6 d3 E9 [$ Z1 r0 {' I* {
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页! Y4 j7 y0 q2 F# \2 x$ ?9 h& }5 r' S7 @) f

  37. ; S1 A9 S" @# e  k9 I' i
  38. $content .= 'END:VCARD' . "\n";//结束标志
    + I) \1 P, d5 x% i, k* K
  39. % T0 p/ m2 |; c/ D7 q" Y  m9 V# E
  40. QRcode::png($content);
    ( O0 J& U" B" J% E+ s5 I7 B. `
  41. ( O4 b( T7 ?1 o7 b, @
  42. 3 n# [4 ~; H1 k/ a* U: t( j; h
复制代码

, t% V! y& K, v$ ^相关文章推荐:  V9 R4 c# P7 Q" i
1.PHP生成微信二维码实例  I' Q/ I6 {9 E# L' D/ b+ M
2.php网址转换生成二维码( E( ]- U' ^9 m5 S
相关视频推荐:
( C7 q3 I& j8 o! A5 q# f* ]# A0 T1.独孤九贱(4)_PHP视频教程- S* u; \  D, ^. q' x  n
二、JQUERY生成QR CODE
2 r5 q4 r/ }+ \- `9 N* V3 |+ F& `6 x源码地址:https://github.com/jeromeetienne/jquery-qrcode) {- w4 a8 k) j9 ^
  t$ W8 b6 P: X8 ]0 m
jquery_create.php
: p8 \2 o+ |" D1 x9 y4 V! I  U; Z* U8 l4 O
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
% D  @  A. [1 t/ C$ ~" Q
三、PHP识别二维码$ T* ~/ D, l4 D% K/ X
1、方法一) j; O: K. ^5 y9 ?) I
环境需求,安装如下扩展2 ?4 d* f* D* d5 ~6 i9 [& t. `
- ImageMagick
+ P# {# Z& g$ _  F" q+ H4 V/ }- zbar! R* f3 g7 P+ d  |" @1 f7 h; X! z
- php-zbarcode- F, A& t. C/ ?/ w  m
% a7 k3 O9 w+ Y7 R
2、方法二
# s" t1 r* A2 X9 G% C0 ~PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 ^# B% Y; [2 \6 d/ ^; TqrReader类:https://github.com/baagee/php_QrReader
; P8 O, N! l6 w. a9 E' X7 G' k: u9 ~! c& f7 X3 c
  1. + y5 Q0 n( N% m0 r
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    7 c$ d0 t- |$ e* j) W* V6 X2 a- u

  3. ' N$ x) F+ |( [$ L' \0 Q+ g
  4. $text = $qrcode->text(); //返回识别后的文本! q  F( P3 s; A

  5. ; e# G( ]& x# `" T
  6. echo $text;
    9 }- \2 [' S+ e: z9 m6 B4 a
  7. ; P2 K8 k2 l5 v' v% F7 t
  8. 9 a* c/ M6 Q$ M5 P3 W5 B( s6 T% w' K
复制代码

5 w$ G, @! D7 Q$ a7 ?4 V5 q. r链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y70 `# z& j7 W: Z* s' e; L8 |1 ?3 y
, j  z5 X, l- O5 _; z7 j8 C
- k9 e5 h0 f, L1 A7 ]
* G' y( k0 o4 @$ \
/ M& [. t3 _2 T' _. M

& |  }; _3 C" w/ O* T( B  g9 B8 ?- l% Z$ y8 a6 P

  Z8 R$ s, Y% @1 I/ ^/ q5 ?: y* f+ ~+ C

# X/ ~1 z/ p; o0 g# ^6 v) x5 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 22:59 , Processed in 0.118690 second(s), 22 queries .

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