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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 17206| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。* {! R0 o% p/ H/ Z1 K% B' }
---------------------------------------------------------------------------------------------------
/ T$ n4 P; T# O) `5 n5 C: W二维码的分类
. c' Y: z* L- A3 l8 a1 I线性堆叠式二维码9 z  b& ~, W8 U9 q4 ~1 @% G

! r4 O5 x7 \3 x$ Z矩阵式二维码
- o; l6 }% e/ [; x" ]& n; L6 W& R5 V
二维码的优缺点4 ~, \6 K; d3 _* N+ m  @
优点  A3 |+ v- z6 _
信息容量大
3 q- ~' {& \" k' P+ D% `/ h
9 _) l# g& g6 N) e5 [/ T! a* f8 L" g; o编码范围广9 D6 I1 ^0 O# t; t: v
: m, P! Q! Y* w' x$ g
容错能力强
) a0 T2 H! x) r: q5 P" d) T- a9 `. x+ n* R* J& f0 I0 a& g4 e
译码可靠性高
) Q/ v; D+ F8 t! I
5 Y! ~/ m  o% x& T, D  W, p. s% k5 ^7 O可引入加密措施
- K+ F" M3 ^- g/ Z- n
# f9 B: S' I" G: v; R* ]! e成本低,易制作" e0 r2 n7 t& m, @* z0 E

! O4 ?$ j+ k/ b, q缺点) u3 a. a0 a  g
二维码技术成为手机病毒、钓鱼网站传播的新渠道
: Y1 B4 R' E2 e. n
8 r9 C+ k# r, B: [9 |信息泄密. [: W: ~! I0 f$ N  ?  i
* S0 a  E2 J' k& e' A4 C) I
目前流行的三大国际标准9 h9 a( k1 q2 x2 P7 _
PDF417:不支持中文6 Q  x+ d+ Y6 p) e
1 |( i$ M6 {: E5 H- V. n8 i
DM:专利未公开,需支付专利费用; f+ Q9 x5 s( R, \' G3 T: R
% V  c" R7 c: b+ d# A7 c0 y
QR CODE:专利公开,支持中文5 S6 q! M5 k& D, A5 p$ V1 B+ }
$ ?1 y4 a2 `/ P  E3 c5 N
QR CODE 纠错能力
% f+ u5 ?2 G# G2 b; Q' u' d/ fL级:约可纠错7%的数据码字
# A7 T. }$ h; A2 ?" ]3 y
+ z$ }7 P  _0 @M级:约可纠错15%的数据码字9 {- a7 o3 z( O4 K2 f, Q4 h. P: Z4 N: Y

5 e% w+ ?) @4 L: s3 \0 E- @9 @Q级:约可纠错25%的数据码字0 }! t9 u# ?) n( w
8 \! m( v' ^3 b( B
H级:约可纠错30%的数据码字3 u2 Q. @; {' v" R3 c' d, ?) P

6 e, N; [2 N9 N+ @8 l$ P0 F前提条件/ l5 E* C; F3 O( Q
GD库- ^, l% m4 b$ g* G4 M! c' s

) [5 y" q5 X( ]0 o  }/ f0 Y一、PHP生成QR CODE
- X2 |8 Q0 c! |% ^& k9 m5 N7 M3 R官网:http://phpqrcode.sourceforge.net/4 X, S& n" V+ l4 y' Z3 f9 W
  F1 K1 n* @) F: l) u$ ?0 G" i9 r
下载源码:https://github.com/endroid/qr-code
3 S/ p5 \0 E5 k/ _9 e8 ?2 S
; @& v# j7 K1 L& Z! d+ r目录结构7 J) o! l  U6 i2 Y; Q7 U; w
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png 9 k, u* r9 r0 L

( d. W% _7 Q8 h9 A1 M: {1、qrcode_create.php3 ?( P/ b, N  O0 K# E4 K0 Y8 G
ps:生成普通二维码
, W: U/ n/ ?8 |/ B/ w; X( v$ g) M# R

  1. ( y5 E' d4 V: |$ |( a
  2. include_once "./qrcode/phpqrcode.php";/**
    1 o5 Q5 b! I3 h
  3. 2 @1 N$ s4 I/ l7 L- j
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, n2 H  ~+ R4 m& d' [7 R. c! ~6 n

  5. 4 t' t7 G! y( q, w3 A
  6. * 在浏览器上直接生成一个二维码(内容为abc)( J4 x( ^; q8 }% v  A$ C

  7. . v# C# P+ N- T
  8. */QRcode::png("abc");
    - O; y& {, E9 @4 t) I( c( s

  9. , t' {4 w$ V* ]6 G2 G; G6 ^6 I7 n
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    - c) |. A' e' m: B- Z2 [4 V

  11. 3 ^2 n) n8 p# ~9 s
  12. * 生成文件到本地
    1 L+ w. Q0 [) t

  13. - U4 Y$ o4 a- ]
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)+ d& `+ }! W: U; u1 W
  15. . @/ s5 s3 E2 r5 {
  16. * PS:$saveandprint源码的p6参数做了修改
    " j3 o- `  r! T6 o+ c+ U, z

  17. 1 b5 M) ^# s; M+ N& ?0 ^; _( ~
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);7 p& Y- k# G2 d; N# B9 t4 K

  19. : o- Z6 @. L( i& ]- T
  20. " D- D- _) y+ L; [# X
复制代码
1 H' q) b8 v0 C' _; G5 q8 x
2、qrcode_logo.php
1 {  {' J( G4 ^/ u$ V3 v; y/ Tps:生成带Logo的二维码
  1. & c) }. `- ?- }' D# B
  2. /**
    - I- F4 V) S# u% z

  3. % b" x" H( E+ o  Z. U$ p6 k8 h
  4. * Created by PhpStorm.4 ]* N' t" c6 b$ {7 ]8 N7 \
  5. ; [3 p; N6 [2 H) s5 o8 O
  6. * User: user9 |" T7 v3 Q) t: p. R

  7. 0 h, k% C0 r( ?& s& j
  8. * Date: 2018/8/16. r$ v. N- }9 ~( w) ~9 x1 T
  9. 7 P4 G3 t: h& q1 {7 T# J4 @
  10. * Time: 10:43) @: b3 S5 N. {5 y, j2 U+ D

  11. 5 i3 P" ?6 G& E7 `
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 z' {3 s; T  h

  13. # i5 |/ {+ b- E' s7 l% L: a
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称, W5 z; A( y! ?4 |& L5 y
  15. : s4 P  t; f6 E0 l
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是. ^* _9 f6 Y3 q/ ]: j6 @! W! M

  17. 5 K% S1 k7 v- d) f
  18. $margin = 2;//边距
    9 P- s  E. e/ L

  19. 3 g' y) r8 Z  H3 K  n+ v
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片* ~- z! O8 q# [; x

  21. 7 `& X4 h9 a) t: Z" l7 L  K  N
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   : B$ I1 X. U- C

  23. 4 \2 @+ ]1 P* w! y5 @
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    + ~2 l& s4 k5 e9 ^. A
  25.   O! F( [$ I; z, i
  26.     $Logo = './pic/logo.png';   
    . }' y# i4 |7 g4 d& Q
  27. + @! V' d. a+ c1 x3 b; G
  28.     $Logo_re = './pic/test_logo.png';   % E( c9 X3 D7 |
  29. , c5 @/ p( @6 G# k# L& E
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   - ?9 C9 N( H2 @6 g8 n5 @. [' @3 F
  31. 8 p! Y. v+ Z1 `, e& A
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
      Z5 n/ @, e( M# Q, n' o( k% e: ]

  33. 2 ]( {# t+ v" q9 f/ Z, Y
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ' t% m' Y; K3 k" q# @8 {

  35. # p' g4 r/ ~- u& r. M" o
  36.     $QR_height = imagesy($QR); //二维码图片高度
    3 @+ d$ }2 \9 \; x

  37. % n' e4 T$ U8 ]9 z
  38.     $logo_width = imagesx($Logo); //logo图片宽度) Y+ A6 D) h- Y- W* B( c1 h
  39. ! g/ T7 w3 R0 ?2 ?7 B& ~
  40.     $logo_height = imagesy($Logo); //logo图片高度; K4 ^% o4 L5 J  y  ^- A

  41. ; g5 b/ _1 I+ d
  42.     $logo_qr_width = $QR_width / 5;   
    - ?5 h! h- a9 j7 ?* `
  43. * Y* D2 j) M0 f/ D
  44.     $scale = $logo_width / $logo_qr_width;   ! M' d7 N( W$ d: d
  45. $ T" \' q! N9 \
  46.     $logo_qr_height = $logo_height / $scale;   
    ; A4 l4 m9 S- s( f5 j/ y

  47. - u# {  {- ~- S0 b
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ' q4 d% W1 B; U+ V  D2 J
  49. # A7 d6 R) t3 y- `* W
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ( [. T- @* Q& g1 T+ {# @
  51. , |1 e$ Q9 q. B* J. V
  52.     //输出图片
    2 i" B- I; m0 d1 a) [

  53. , @' b& D, Z6 q: s
  54.     imagepng($QR, $Logo_re);
    ) L! w# U: S$ n6 l) c2 {, n

  55. 1 i3 e# B8 h) n# ^6 H
  56. }
    6 }$ f4 s; k3 n

  57. 0 ~/ h9 v* p* M- W  z
  58. % W! d3 A! }* O+ }- B
复制代码
3、qrcode_vcard.php (生成电子签名)( U. u9 o% B( ?$ G7 c

$ g( b5 n6 o2 A: LvCard格式:https://zh.wikipedia.org/wiki/VCard
& Y" B8 ~" q6 t7 ^5 s* u0 ?7 G* ?0 l- z3 C, |4 I
  1. 2 V$ i  P+ |3 d4 O0 X
  2. * Created by PhpStorm.
    ; I% F6 X% Q0 {
  3. 9 S" b0 ?( Q, g4 z( a! G( D- R# F0 v7 ~
  4. * User: user& e4 n* d$ U6 G1 R- v
  5. 9 P$ T: h+ l. N: q7 T( @
  6. * Date: 2018/8/152 \0 M& i  A; A# l" _2 o" w) P
  7. : l9 Q( r8 u2 c/ w, ?$ I, k
  8. * Time: 23:00
    ' i; A2 K& ?/ F1 f- a& n
  9. 3 y) Q7 T  n- B
  10. */require_once "./qrcode/phpqrcode.php";/**% j$ v; L7 K6 P9 D
  11. $ p2 q9 c) t" }& p, R
  12. * 生成电子签名8 X4 C8 x' f/ c7 s) n* G
  13. . S/ ~- x1 h0 t( `+ C
  14. * PS;使用微信扫描二维码2 S9 E& I4 H, Z& o

  15. ! x! ~: M9 ~1 {$ [2 D. F$ _9 L
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    + r# B* R2 S- J& y

  17. 1 W) r5 B8 b) ]3 M* V
  18. $content .= 'VERSION:2.1' . "\n";//当前版本& U5 `' A5 W1 v: m0 K% k9 D7 I7 j
  19. 3 S& [# Y# c) o& w# T
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ Z2 m/ b8 N, |- ~# k* o# x/ ]# Z
  21. * P* ?# g$ o- e( X# J+ X4 s
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称9 n% {9 V- A5 u( Q7 q: a9 }# _
  23. 6 p. G5 b3 C0 B. d; _6 _+ ?/ E% d
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    . U8 T4 `! Z1 [% n% ^& K

  25. 9 M+ J2 B  K, {  t6 O- L  A8 Z5 h
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话' q5 v+ k5 `1 F/ l4 l
  27. + F' @) N. R5 t  W5 p0 e
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址. |0 s1 r0 V- R

  29. + j7 }! ?6 l. X3 U
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    1 D8 Z/ r9 z7 e  L

  31.   k* l" V  i" R: k! G' H
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    8 Z- x) S" {5 o3 O$ `; L

  33. % p" E* N# ?: g) i: l& Q2 c; }; `
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    $ M. c1 j- c' }: z
  35. 6 y6 ?+ y$ a8 L6 L. ?& l# ]3 T
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页; w+ U" r3 P+ _% F2 _0 `$ f

  37. . }! |% w% q. t0 {, `. W
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ( t# _0 P7 }6 Z0 g$ u

  39. : L8 N% n: {+ L. l3 z: Y
  40. QRcode::png($content);  t. E3 G/ T" K9 E
  41. % `# u+ Z1 a1 a) V" w- e6 }
  42. 8 l: m7 ]1 l8 q1 e& X( z: l: O/ F
复制代码

# C# h2 k3 [4 b5 x, ~7 I相关文章推荐:  `; r: g4 f5 b% ~3 n1 B3 N% V
1.PHP生成微信二维码实例! S) \0 E; J5 w4 N. h  e  X& }" {
2.php网址转换生成二维码6 M& l, l! Y: l
相关视频推荐:
' g$ f# {9 ?& J/ Q5 X$ l6 n' y1.独孤九贱(4)_PHP视频教程
4 h* m4 q' s7 `) O, J9 z二、JQUERY生成QR CODE
. O, N& @" N# a; a$ D7 l源码地址:https://github.com/jeromeetienne/jquery-qrcode
. C- z8 {/ N3 g+ j2 ~
$ s$ g3 u) @+ f+ r/ Fjquery_create.php: C+ I  Q* J; c- H1 G! O8 m
  I7 G! `8 N9 {$ x3 d* c6 x
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

7 S( X( `) T7 Q9 M6 N3 C7 x三、PHP识别二维码. z/ ~! `: `6 g) Q, `
1、方法一
7 O" ?4 `/ y: e8 x9 @环境需求,安装如下扩展
7 K# q0 B' j! ^# Q$ U9 l7 D5 Z- ImageMagick
% E" `6 K& R  D1 O/ D- zbar5 U- Y& f6 v, L0 s7 a' d! ?
- php-zbarcode/ F/ Y$ t3 K: f0 k) ^8 |  S* l2 q
# y/ q- l9 E# \/ S' M* M# M
2、方法二7 q* d2 J0 J0 S& d2 k
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 u: s/ i. S/ ?) x( W7 @, X6 u2 lqrReader类:https://github.com/baagee/php_QrReader
# ^4 B9 e# p5 [$ @4 L( o. {9 n- G- ^) a) b+ E9 d

  1.   F! L$ e4 V% V5 U
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
      \+ s9 a7 t% G* x( l
  3. 0 n7 T* ?/ @3 P7 a4 ?6 o: n$ i
  4. $text = $qrcode->text(); //返回识别后的文本
      x" i  e3 U+ O$ p+ w3 [- T* d

  5. / H% ?5 c! u( N. G% z2 [' f
  6. echo $text;4 s& t/ u6 x0 D( {* g; x/ M0 F
  7. # I' `1 f8 P, F+ j
  8. * L, w  I' L- u) i2 R/ _; d( i, w; F
复制代码

2 M5 \  s& m/ G) [' E' _( C4 s- d链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y74 n" t& U  M. \2 H; ?* X- G& F8 P
+ |1 h" _+ ~, e5 B8 D
3 L5 `; i8 \& V7 S

% Q; L; f; n2 a+ ?$ u% }8 @! w) x2 q/ Q) U' k; X" ]7 n
9 B; Q% L5 v" f! c, @

  J. g1 D2 f5 [( U% D8 C8 k. j0 S/ o; v* {$ X  ~% I- g% c

8 N! L/ P. Y& h4 S- F: j# Q6 X0 K- Q+ T3 R. ~, P* \$ M' |

最新评论

GMT+8, 2026-7-15 14:50 , Processed in 0.078034 second(s), 25 queries .

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