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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1882|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
. H7 R+ b* G. l5 r7 x5 \---------------------------------------------------------------------------------------------------' W4 p0 G$ n: l; L
二维码的分类
, t/ M# B8 G. s# h# H) D, W线性堆叠式二维码( x+ c& R- [& |$ g& `5 H

' _3 _$ A* n/ T! V, W: F矩阵式二维码
1 x) B2 L5 _6 K0 ~3 W- Q. S: H) t$ V) W
二维码的优缺点0 R( }. X& V5 G6 H# M# {& u
优点
4 V" I: k. T3 ?" N& K7 V4 R信息容量大; T' z3 a9 q8 g# G! u

! ~  P6 f" W/ t' ^) U编码范围广
2 u( `" W2 T) K) t' q
8 b0 ]. c* R! l/ e2 `' G2 O容错能力强
* T* b/ y2 t1 w+ l) R+ @+ M
+ B" F6 v, g8 ]. Q& i3 H译码可靠性高
) ~2 f" B6 C; v. `. v( o7 l7 T! A. u# L) \. F0 P& M5 _7 J
可引入加密措施) B- D3 ~  u( T; M0 f. H: y4 k

4 ?5 o1 M; F: g8 i. l* ?) n" u6 k成本低,易制作2 \+ j8 j& P0 F* v

; K: L8 m" t, S# F2 J缺点$ Q6 k1 t7 i% h" Z& A) }! y
二维码技术成为手机病毒、钓鱼网站传播的新渠道" G' k( L9 w8 o$ \

3 F; S. m/ ?9 s信息泄密* a1 n0 w4 Z- G1 t5 N0 q

1 N& M/ I" u- Q! m! f5 D0 t目前流行的三大国际标准
: v! Y: D0 J( ]5 G5 s% |PDF417:不支持中文
$ ^. r$ Q! P7 X4 w! R/ K
  m( B5 ~$ O8 `, j; a* _DM:专利未公开,需支付专利费用
6 N! x3 V" b) j1 s6 \: {% l9 R4 C/ v
QR CODE:专利公开,支持中文
9 R2 g9 |0 x7 J( i: r8 k* u) w% `) ]* f$ g! `8 {8 Q/ m5 {& }
QR CODE 纠错能力9 p9 k- X  E) Y/ a" r% O
L级:约可纠错7%的数据码字4 E3 r0 |7 Y) I* H0 _3 `9 M
; v" O. g7 {: p* }
M级:约可纠错15%的数据码字( ~8 U6 }& Y, P! P, O2 d/ E

8 X9 J/ a- w& X# p/ QQ级:约可纠错25%的数据码字" W8 {$ e$ A+ U: ]! F. R
* g& r# l# x1 z- ]  t
H级:约可纠错30%的数据码字
' _/ X5 F. N8 H5 X/ \, d4 T$ m5 X0 L( g) j) X1 }( v) z9 s
前提条件' |% d- Z4 T5 A* f2 ~5 f/ {
GD库
4 ~0 ]+ a, u0 a) e
0 J* b8 l2 k" @. U" b0 m8 z一、PHP生成QR CODE
1 {# ~. C4 a/ X. M" W7 c官网:http://phpqrcode.sourceforge.net/
/ o# b9 Y+ A! [3 \! D2 |0 C% W* J7 R, W* v( ~" L3 p& i; ~
下载源码:https://github.com/endroid/qr-code& w+ t2 d* a* O- q9 d3 l: R
# p0 _4 Q5 O' Y/ L4 k1 t
目录结构% r' E* W0 a- A  J2 z
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png - X9 p5 n3 P/ ?2 V. I
$ b- J; e1 U% ]! q+ Y& K
1、qrcode_create.php1 r* Z2 ^+ {  a9 A% P8 P
ps:生成普通二维码
+ p5 i7 B! l  i: U# F
  1. 1 a6 I' Y5 N# Y, M) G+ w! C
  2. include_once "./qrcode/phpqrcode.php";/**
    4 q) X( f3 y9 d3 k/ Q

  3. 8 g! Q! |4 {: e+ d) l4 M, U
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, s+ o+ p/ U! U0 k& W

  5. 0 X3 p0 Y! h, h4 a" `( j
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    0 R+ ^$ K& A6 l+ I. D. p. G) T

  7. ( s7 T) z. k" r! [$ {3 x
  8. */QRcode::png("abc");0 ^2 _* ^9 h4 ^- i- w' }3 [
  9. ! u$ T# ]$ H9 G5 s+ f
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    # g7 S8 ?4 S3 e7 G; S, l9 M8 @
  11. * M) @, H, y$ m' `2 x2 N. X' F
  12. * 生成文件到本地
    0 B4 q- w& H0 G+ b4 N5 K, Q- @6 f' S5 r

  13. - F- _% R! F0 ^2 _9 d1 A- {
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    7 r3 V1 }* F" Y, e+ D

  15. 3 _* O  ^& |  K9 `
  16. * PS:$saveandprint源码的p6参数做了修改, Y% L; Y3 J# W, {/ z7 T
  17. ' i$ ], R8 z  B: H9 ]
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    , a/ Z6 o7 D4 I: Z9 n5 ^8 }' r

  19. 7 v. A% d8 S+ G' \* N( d% E
  20. 4 w( X$ ?+ d: s  @/ X' u
复制代码
7 @2 i2 U$ p2 W" y) z" |+ y3 c+ P
2、qrcode_logo.php
. @  |7 |! n2 b+ O0 p, Rps:生成带Logo的二维码

  1. / {7 M4 t2 z& G" W/ J& l
  2. /**: C9 u3 _$ U" S) u+ m+ \: X  H

  3. 6 v5 s2 j. X  {& |; z
  4. * Created by PhpStorm.) w% A5 W, W' ]1 N

  5. 0 P& Q3 C1 W6 G' z
  6. * User: user
    # ?+ P* {, h: J: D- J- L
  7. ( K4 q2 g! O: q/ P; i7 [) ~
  8. * Date: 2018/8/16
    ' O2 Y6 w0 z9 y6 w
  9. ( U0 q; p4 `% {% H5 I0 |# o
  10. * Time: 10:43( D! E; }1 r5 x. m# Y
  11. ; k* ^/ B5 e9 j, L; m: O& @
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";% D1 j. f* Z9 y0 M$ H* B) N

  13. + e" v5 e# ]  G0 _
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
      ?7 D& b/ r$ v$ ?5 g' U0 R
  15. $ q! H/ C% A9 J- C0 B- h1 B: ^
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
      ~0 V" t' y3 v/ D5 _. Z# P% C. I

  17. 4 U: |4 X; R/ Q$ |# J
  18. $margin = 2;//边距
    7 Q) g, L$ a5 r$ V

  19. , U( v3 L8 z" q3 l9 \
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片: @9 x! L; d' c/ H8 a, m
  21. 6 Q5 L9 d7 a# R/ y
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
      A8 R" N, v* \& `$ F

  23. 9 d+ K4 p; r9 @4 l) [* |  p" Z; D
  24. $QR = $picPathAndName; //已经生成的原始二维码图" l) ^- C; b. Q2 ?) R8 E, _/ ?

  25. 2 |$ N' [3 X8 F' Z
  26.     $Logo = './pic/logo.png';   
    " E+ C, Y/ @! _1 \
  27. + _& W; o" |: D* U* f
  28.     $Logo_re = './pic/test_logo.png';   " [. m4 y/ }- Z5 @$ M' f. }

  29. 1 _# t. P# K# k" a) @( @
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    : b2 t, \/ c. h7 Y, ^) i( ~- k: g
  31. 0 N2 p1 a/ _6 g6 Z" m6 O
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   - ]# l, d( |; X; C+ n
  33. ' x0 P" e( m$ S- N* _
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ( G2 Q. a5 o' W# u; n. Z1 M

  35. # T+ C' C9 c3 l7 d1 r: [2 q
  36.     $QR_height = imagesy($QR); //二维码图片高度
    1 f5 E! {1 p/ V9 d  x8 s" Q

  37. - x" Q1 k, P& q
  38.     $logo_width = imagesx($Logo); //logo图片宽度- c4 C) x! i& u& O5 F

  39.   h: W8 s" C1 d* A
  40.     $logo_height = imagesy($Logo); //logo图片高度0 w; g' y( Y, {: G

  41. , q1 ]3 ~, i: m* c( E7 @
  42.     $logo_qr_width = $QR_width / 5;   / l2 p  x: j7 a$ f6 t

  43. / R- @8 V& X# S1 `% ?+ T
  44.     $scale = $logo_width / $logo_qr_width;   
    , [# [# c5 V# U1 G! c

  45. 6 J" T6 c7 u9 ?. B
  46.     $logo_qr_height = $logo_height / $scale;   ! C2 E2 k$ I0 g+ L# {& d0 |

  47. / W& W/ Z9 Y0 C$ R2 v/ w
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    . Z# ]7 n6 P+ n1 T7 i/ }& q
  49. 7 Q6 R% K, r) j. A0 R: H
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    4 v9 V/ d: z& B$ G) M+ J* [) P* {

  51. & o% r% r! q4 }. @6 C# m( ]
  52.     //输出图片
    4 G! s, @' O+ Y* }

  53. ! F9 f+ P% |' |# S* T
  54.     imagepng($QR, $Logo_re);& ^4 M$ B  h; c8 V
  55. % V4 E0 K  t, O* t/ m
  56. }  d9 ]$ a6 d4 u( H8 \
  57. " q# h) U! w0 O
  58. . \2 u- |0 x8 x  D
复制代码
3、qrcode_vcard.php (生成电子签名)# x  Q8 Q; `# ~7 Y9 q. y

0 d& g+ E8 m4 x9 RvCard格式:https://zh.wikipedia.org/wiki/VCard
. H1 [. }6 d( C3 d# l" Z+ ^
* V$ h1 H* E- W% |
  1. ; q0 y" T. D, W4 L
  2. * Created by PhpStorm.- x7 c$ v/ A' X0 ^

  3. " t5 a/ {) K4 J  q% x3 b! _$ ~( {/ o
  4. * User: user: ~' s1 K0 d) W. }5 C  d: e

  5. ! a  v/ w+ u6 D8 X+ Q) b
  6. * Date: 2018/8/159 B3 |' w& O# U0 A

  7. 4 [! g$ v2 N" ^( u, C4 X  R
  8. * Time: 23:00( T5 |* z! q( D' R5 J5 g
  9. ' P9 M7 i) d' o7 c# D% _- p5 d8 f
  10. */require_once "./qrcode/phpqrcode.php";/**
    % Q' g+ ]- Y4 ]; H
  11. & K; l5 Z9 W: [) ]9 ?" D
  12. * 生成电子签名
    ; w3 i3 V3 w  u$ w, R$ a
  13. " F( W% c' k0 M/ A/ b$ u' M* h
  14. * PS;使用微信扫描二维码- C7 c3 [7 j0 P5 R& _1 N' B2 J
  15. 5 \: U1 o" M# Z4 e6 ~4 _% S
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ) `5 C# L" S0 o

  17. ' c0 T) L9 z* j3 k0 F. F* g* P
  18. $content .= 'VERSION:2.1' . "\n";//当前版本1 O* W, ]2 W) l
  19. " I2 {  D8 a# y, F
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名+ S& ^4 g4 }, x! r
  21. 9 g: Q# k. W5 B, V
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    : ]4 M# l; Y8 m* W

  23. * y8 ?, C' D% H4 F
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ' u# q( I$ ?2 V+ d
  25. 1 ~3 Z2 b9 M! g6 I/ ]
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话9 S$ z( p) b+ j9 Q

  27. - k0 m. E% Y9 |+ h9 l
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址+ g7 q8 V3 r; h
  29. , b- N( L1 h  i: I; J5 a2 D
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    4 M0 x& B/ ~: p! d+ m

  31. - V# p" ^# H& y; s
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    & ?8 i) Y6 X( }" x

  33. ' Q; r4 Y7 R( Z( V, w) v
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# [. Q2 j% }5 k( O1 Q3 w

  35. 0 C# h8 `+ @3 `- W- B
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页( w0 J7 B$ ~; z  n: R1 {
  37. 4 [8 H* S. }) I/ a. }$ @7 z
  38. $content .= 'END:VCARD' . "\n";//结束标志3 D0 E  u& E7 g7 I. @  x  H4 ^& E3 v

  39.   N; B$ z$ ~0 \# i* l2 @
  40. QRcode::png($content);
    . B8 y6 j8 A, [4 r7 b" _

  41. * @9 i+ ~5 O4 g0 S: n0 q3 s" D
  42. 3 X# o6 U( Z. x$ d
复制代码
: e2 c# ]+ X8 l& W
相关文章推荐:
+ C1 d* C5 C5 x0 h$ w$ n1.PHP生成微信二维码实例* Q9 W" G2 ^& ]7 E! G
2.php网址转换生成二维码4 W7 G: D- y5 G- T6 h; a7 w2 M
相关视频推荐:
" t! R2 n. Z( T  i6 D. I: H8 a2 s* @: p1.独孤九贱(4)_PHP视频教程
% A4 j# c/ D: y. T$ }- L二、JQUERY生成QR CODE
9 w! _* Q* s2 d4 I3 N  b# f, v% P源码地址:https://github.com/jeromeetienne/jquery-qrcode
* d% \  p/ R, O/ u% C8 \
& Y9 k9 x4 ^7 w) M; o: m  S) njquery_create.php; E7 D  o0 z/ x/ t2 y# H" Q: }
) o5 Z, m6 I% V8 Q" m
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
& F1 N, T5 W0 C0 x: |
三、PHP识别二维码. n7 g0 X! g9 Q( O; G& X0 l
1、方法一2 e; w! d' |3 c4 r* G
环境需求,安装如下扩展
9 {, w$ Q6 Q* P5 E2 K  p- ImageMagick4 i+ }; x" Z' e, o! L, A
- zbar
; S+ U; \' Q) t, |) T! [0 d( y& B. }- php-zbarcode: Z& b% B! M0 u  L2 ]; y

+ z' T: `9 ~/ n' h6 [8 Q2、方法二
; n5 k  b# e9 W- \PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以& A+ w  V! V7 c" }5 \9 n6 I; A
qrReader类:https://github.com/baagee/php_QrReader1 Z0 x+ |* X$ v) Z- Z
. [, S9 ~; y/ a- q8 O
  1. 4 H) z: O) u1 K4 B& d5 B' }6 C; A
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径' J& g: w# ^* `3 y& @

  3. " l, T% l, i/ U1 \
  4. $text = $qrcode->text(); //返回识别后的文本% e$ P1 d5 R6 F+ l

  5. , t* b; h! _/ G; _
  6. echo $text;' e- W7 `. {# _; A

  7.   T1 L% R3 I" `, N# s( X
  8. ) {3 x8 b5 s2 P. \8 ^( V6 h, z- ]
复制代码

+ Y6 j' q$ S8 X4 m链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y77 _& n1 i8 X) m, H% ~3 D0 ^

. j) Z' c1 n: S
  x1 U" a' U: ^- w  l) C! \, N0 h6 G1 b8 s* o! R- t7 c% J

+ R5 [! g% y, n( g5 x) x4 I+ C( D, D9 e
) M* q0 N& N' |' y
4 ?3 [' {! Y2 U8 I8 G; m

: @9 c: Q0 {" x4 N  S" v. L3 a
2 l- ^( ~4 l1 r, H, D: h" b
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2021-9-17 14:25 , Processed in 0.117805 second(s), 25 queries .

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