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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
7 \* e$ L! o6 P---------------------------------------------------------------------------------------------------3 x+ T* ]1 x' i! l2 K0 e
二维码的分类% h+ }2 s# G' D- v
线性堆叠式二维码
- z! g( c! o+ v& M" B4 O1 \$ L9 `+ q3 n
矩阵式二维码
; k: n5 b6 v1 \4 j$ @
  V" d) u9 G& \% i6 x" g二维码的优缺点
0 n. ~2 O  ^9 V) @  Q优点) p/ O$ P8 P3 g. G. \4 E0 f, B
信息容量大# w: P8 c9 m& A( ?( a/ ?( e
( h+ d9 |5 V3 M
编码范围广
" r8 t3 s  W/ t- r+ `5 o" F& i
8 K$ G* g- x- @0 o容错能力强
8 f: j% k! J; H) l9 T! [1 T# M% ]/ t' D/ l* s0 b' o
译码可靠性高
# j8 B+ B* J$ a& D. v  Q4 C* }
3 m. o2 J: w: h9 x; K: ?可引入加密措施9 F) h  |! Z9 n1 M- r. D1 u3 a
) i/ p: ?! S! h3 e: |
成本低,易制作
/ R0 e5 |& g; n% s2 O
& @8 y3 \" z5 ]1 ]% d2 [7 y+ i缺点
9 H1 U) s* P9 }  o2 ?0 X* q二维码技术成为手机病毒、钓鱼网站传播的新渠道
+ b' ]8 L6 T2 `4 I, F
" U& D. |# t* y0 X2 _信息泄密
) j7 Z, ^- _2 o2 n6 j/ U
' ~6 I! v, }& H) Z  e% f$ q6 K目前流行的三大国际标准: ]$ |, e* [# t+ R7 Y  U
PDF417:不支持中文
" K9 C% s# U- N5 ^+ d1 i) Z/ I" P1 ?4 ^! ~- `. g  [
DM:专利未公开,需支付专利费用$ N( j* D: r, o3 ~+ R) C, ]# d0 {
( E( M# x$ s" w8 d' E
QR CODE:专利公开,支持中文
1 G5 t, ?( m- M2 \3 q1 Y* B0 }
4 I! T+ F# `1 c' e# |$ pQR CODE 纠错能力/ M8 x# X& e0 A, n5 T7 ]( u
L级:约可纠错7%的数据码字  O) K" T. ~- {8 A, S% |. H

' {' w' O, P& j: iM级:约可纠错15%的数据码字
  ~) q! G7 M: ]5 P5 O
2 ]0 K- `& Q! a" J# N. g( g! j7 Q* FQ级:约可纠错25%的数据码字5 P( p3 Q5 t1 P1 X5 a& L

1 m  ?# W( O+ Y, QH级:约可纠错30%的数据码字
; [; ^, D( \+ j. Q( G2 B5 v( N$ m2 E1 Q8 l" A; Q* q
前提条件  |1 ^- H; U! B- F+ g; e
GD库5 F% h5 C# o( L; R/ p9 x; ~

# R+ l8 P4 i; t5 Z0 A* b一、PHP生成QR CODE
% R9 N' n: u; ^6 K官网:http://phpqrcode.sourceforge.net// t, \  j7 f- T! `4 @5 s, u

% h1 h! \2 D) F' H下载源码:https://github.com/endroid/qr-code6 u4 v1 U2 W1 _9 o, D

0 F. ~0 W, S" o3 n5 Q/ Z% P目录结构
) }9 I% P6 ]6 e 8 U6 i3 e8 y! ]  K/ C) T
9 \" C  s& h6 X( T( ^
1、qrcode_create.php
8 U) _  |8 y. a& z( B, |ps:生成普通二维码5 m$ M0 O& C  ]6 x
  1. 7 n; A$ J$ @, L& L- |  f) @5 l
  2. include_once "./qrcode/phpqrcode.php";/**" ?. `" C5 ?8 G

  3. : S8 v- w( R# f1 b
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径; k/ a. H, C0 R2 s) @" j9 q# ?

  5. 5 _$ {6 T  [+ O" P, E/ H2 G
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    . o6 f! o- Z2 x/ ~
  7. # }' _1 x9 B% _9 F+ Q5 x
  8. */QRcode::png("abc");
    1 z! b# j- b5 r1 x4 N

  9. , I% ]) W; r8 O4 E
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**1 F* a: ]2 @: `( r

  11. $ U! v; g, Q; E; e- a
  12. * 生成文件到本地8 E& w9 X3 }+ T0 m- V
  13. ! ~& E. x1 f# m( L9 H
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)  w* Z: T$ h/ J( v% P

  15. # o+ G9 [$ \* U- R( T
  16. * PS:$saveandprint源码的p6参数做了修改
    + H0 v1 Z8 h5 m
  17. # ^) G$ U  i0 i$ \
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);  o& c0 a* y( r# S# |; B/ R
  19. ' _4 `6 J% j$ M3 w

  20. 8 B' C2 w5 ]6 G7 E' u5 ], P+ T
复制代码
9 z/ X6 i% ~1 G2 t# w
2、qrcode_logo.php
2 k+ E) R" s& I$ t2 k) ips:生成带Logo的二维码
  1. " l# \/ H. P" S4 F+ o! v
  2. /**
    ' \; u" {: Q' \  L  k; ^) i
  3.   ]5 a* ?, J/ B7 R; x; M
  4. * Created by PhpStorm.! t  j( t& c4 ]* u/ b* Z
  5. 9 Z, ]' _' L- V. u
  6. * User: user
    / a; e! D2 j- K, v) x& x" @. Y

  7. / N" A$ ]0 B; G& C/ U
  8. * Date: 2018/8/16) ~' v0 z7 B+ N  f# d$ g' I4 M
  9. ! t: i: D4 s% t7 F( A5 `
  10. * Time: 10:43
    ! {8 X. Y/ O' u" J3 B* D

  11. % h3 Q3 V; a5 l# P
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    0 F* \/ b3 U) F" W) S8 j
  13.   [) N6 |4 `: q" B. Y* ?) B
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称- s0 a7 e7 ]6 K! C
  15. 1 W" a( s" h) |: W0 ~
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是0 f0 w! L% v( p! f6 [/ p
  17. 7 \! H  q, L+ U1 W& D# P
  18. $margin = 2;//边距1 ?: U0 W$ \' q+ O& F

  19. 3 {& d: _0 R+ L
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片. T, m- F2 S% X2 t  D

  21. . t0 ^# r$ J( h4 G# J/ E! Y- b6 M
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   7 X0 O' l- G9 }/ |7 C5 B+ p) w1 l9 }
  23. ; Z( Z1 ?0 B6 N
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    , X7 W) q: g% q
  25. % l0 u( {$ g2 ^4 ^. ]0 W( J9 a% P! z
  26.     $Logo = './pic/logo.png';   8 K& ]: f) X8 r/ B; s& d6 w. C: n3 {
  27. ' z, U! n$ i! ?
  28.     $Logo_re = './pic/test_logo.png';   8 X! n# [1 c) |" g; F: K' ?

  29. 3 ?# o! }- Q2 Q5 F, _
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ( s, w  S6 m* ~$ h2 d

  31. 8 z$ T- I7 z+ K  f* l! H9 z  F
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    . G' m1 b4 T. k, ~8 ]* h2 s1 k

  33. 4 y0 k* f) Y  h, C& f6 ~" o2 O% {( M
  34.     $QR_width = imagesx($QR); //二维码图片宽度: A8 Q& m  A( X) T4 c# D
  35.   s- N* w6 s" Q- t  r- p
  36.     $QR_height = imagesy($QR); //二维码图片高度
    3 s- a, f6 l' \9 o( }$ P7 @2 n$ \
  37. 7 H4 D# ]% x* \- g$ n* b. J  |
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ! S( r* |) [& A: S/ R: e' S1 j; u
  39. : E) m  @+ n8 ?1 y" u) s
  40.     $logo_height = imagesy($Logo); //logo图片高度# k3 o! @. Q9 Q
  41. 7 l& ?, @& O  M9 C
  42.     $logo_qr_width = $QR_width / 5;   
    9 d1 _- T; ?- s) V8 q7 X1 }

  43. 2 @: Q) A& f7 V. R$ U6 p2 T( O
  44.     $scale = $logo_width / $logo_qr_width;   
    ) W. R; s* O1 Z) d9 e9 g

  45. $ O$ F8 u) V; L0 a, s/ C+ u: e- S
  46.     $logo_qr_height = $logo_height / $scale;   3 Q: Z0 K3 T1 a

  47. 1 M0 p6 e6 a! u
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    1 V$ L( r/ ]6 B5 T6 ]8 u; y* \# V
  49. " r5 {8 `) r9 a' q  }. d8 d' y" g
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   . A& q6 g9 V' f9 H6 m
  51. ) [" h, m: B; r
  52.     //输出图片
    5 s" O+ ~6 T; }. |; e
  53. $ z5 \4 _1 @6 B6 B
  54.     imagepng($QR, $Logo_re);
      t# m* f) R9 c" \
  55. : S0 d! D! u) `( g: f7 A
  56. }
    + H, L, ^9 W. o4 Z- O

  57. ! W( H) B8 ?. k) [
  58. , c+ a1 C/ H" r
复制代码
3、qrcode_vcard.php (生成电子签名)1 o* ^4 ]3 C' @
) z' e, a8 W( s; k% N- T
vCard格式:https://zh.wikipedia.org/wiki/VCard, L/ f2 D2 P! k: X: B* u; O
8 u. B: l' L0 I6 [0 Z# U7 m0 @

  1. ; c0 `( X* L5 Y  r+ l" x
  2. * Created by PhpStorm.% K- h  J- A- z/ L
  3. ' w) F+ a% |1 `0 D. U# j# H* n
  4. * User: user
    4 s, U8 n9 H9 u
  5. 1 q2 M4 \  n, Z( s
  6. * Date: 2018/8/15
    * l  s& u( A- L' G6 F8 V
  7. . Q1 @  z) L+ M2 R3 K% h7 O
  8. * Time: 23:00
    3 P' ]4 b, j. p

  9. : q# U% n8 t4 g- @! C3 E! g
  10. */require_once "./qrcode/phpqrcode.php";/**
    ! G( p% p1 W& ?$ k8 Y, A4 n% _+ j

  11. : C; ]3 S! m5 _- ]
  12. * 生成电子签名
    ; q0 l0 Q; e% N3 M0 L! l2 r

  13. ! Y& W! j9 l+ {+ P, t' k
  14. * PS;使用微信扫描二维码4 l# e7 E4 y2 o% G
  15. 3 u' v2 l, `8 x- h
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志, {6 e" ]4 P" Q
  17. ( L) M2 [& g) }. z+ s
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ; c7 s9 i/ N/ h

  19. 8 @* g2 ]+ Y. z3 p. @* {& A$ j
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    6 ~4 }5 N7 w, v) G
  21. ' g) }" r. B8 I. c
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称7 H, U$ `, ~% J4 c, ^. g( L% a' V

  23. ' W1 U/ b4 `$ g. u! [* t/ X
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位/ J3 ?1 p  A* b4 F

  25. ( j( R6 p/ X2 E0 T
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    9 ?# ]2 O8 b9 U7 R: N: v# K

  27. - _' R, M( e' E. A5 @" G
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    & I% R$ I4 c6 M- ~
  29. 8 I( O0 M; p9 w9 U
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    # r5 i3 g, D; z3 i3 p8 d8 a1 _( F

  31.   E: {" D; N" f) y" Q
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    9 r" I4 d3 z8 o2 Y8 I  [1 z$ n# Y
  33. - L# r/ Y3 K% Y2 I" T
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱2 ?9 ^1 h1 _) E! W

  35. # B5 V/ x. h5 `! x/ H4 x" {
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    ! Q% i1 ^+ V# n2 d+ c5 t
  37. ( V4 Y# l5 B6 V% A" Z4 ^
  38. $content .= 'END:VCARD' . "\n";//结束标志
    . A' e& c! V5 _: ^+ k. X2 [
  39. ) l- T$ G% j; @  S) K
  40. QRcode::png($content);$ D1 q# P& p$ G! a4 M0 v. a; {
  41. : p7 h% w, P' X% L% k

  42. + d; t! ~% f$ n0 e7 h& |) k
复制代码
- y" d+ b7 l1 \- R" ~7 [5 K/ L
相关文章推荐:- ~* |- W' w4 c% n% q" `0 e
1.PHP生成微信二维码实例9 B: M2 x2 _6 w) E' u$ |
2.php网址转换生成二维码: A: M7 a9 H( X" y7 _( L" j) Z
相关视频推荐:
+ P5 i# F2 ]1 w. c9 J1.独孤九贱(4)_PHP视频教程
" V, c' `9 P' C6 Q" S5 \二、JQUERY生成QR CODE4 ~, P, H* T' V" i$ u
源码地址:https://github.com/jeromeetienne/jquery-qrcode
" V! X: l/ c2 ?! x. j
' ]- J9 C) \, Q) U6 U/ Ijquery_create.php. w* F7 f6 T* A9 o' o

+ b/ l4 X6 O' M7 F7 F/ _4 W+ l; z; f
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
8 J. k: c3 V& G7 ~" w3 R0 M! }  H
三、PHP识别二维码
2 Z' P+ u2 ]. z1、方法一
6 n+ P/ E! ^  o7 o环境需求,安装如下扩展4 n8 ~4 v8 r3 k3 G: `1 E
- ImageMagick
% u$ U' w4 r( e) q& `: d- zbar
0 F) H' G3 T+ v% G. a9 }; }0 J- ^- php-zbarcode
5 t% C7 H1 ~# l) G; F% [8 P& ^: C
: _: b7 S1 o% S- o+ s2、方法二
8 l- c: G( q, r9 \: R) IPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以( @/ U. @2 [4 W' X0 }1 D+ W
qrReader类:https://github.com/baagee/php_QrReader
, r3 J: V2 Z: ^& C7 M) i, x; m( s4 |

  1. 3 ?9 }: @7 f( I- \' w
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    # \) `! \0 H. @. o- O+ A6 n
  3.   e! V9 D) E3 ?
  4. $text = $qrcode->text(); //返回识别后的文本: X* O; _: t5 h2 f2 K

  5. 9 s2 p: I3 Y' s; Q9 C( L9 l
  6. echo $text;/ m% K  Y- f7 d& |9 P+ c

  7. ) k  A1 @: F/ T8 {% a
  8. " \( e' k4 f+ `! _. v/ i
复制代码

2 K9 p- l: x' o) Q链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
: T  M6 b2 W8 A& n; X4 Q+ S. X: @8 d7 B& ?) F

0 A, M7 x' i" m+ [# |1 U1 X0 j# M6 g: E0 W; A: p
4 ^# O  }2 t! f( R5 H) G

2 O8 ]9 z0 z( k! ?* i, c; O: ]' H- b% b: {  ?  o" D

8 j6 g+ s. ]( k- _% D, [' {& e3 p, I! |$ l: W5 K3 |& B5 f. D
0 ]7 d' r" [# h7 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 15:13 , Processed in 0.062448 second(s), 22 queries .

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