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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。# d% {5 t0 z, ~9 C. u& T3 ]) F
---------------------------------------------------------------------------------------------------
; n/ F/ |% t. i; a! Q" C: ]二维码的分类
: M2 I: d' g3 W8 b. C2 k! H& p线性堆叠式二维码' K4 P0 q- a6 W. X8 Y
" O  k  G8 N! Q2 W7 y
矩阵式二维码/ `) J8 O6 V0 V  N7 I
/ J! a7 D0 n, S$ [- [0 p& A
二维码的优缺点
. E4 V, |) B: R$ n  h优点& @) }3 l% V9 d% b7 ^, A! y
信息容量大8 E4 G; n) {$ E+ `( h3 m( n$ w

9 `2 X- e$ t1 s2 y编码范围广
/ C6 ], j5 Y% r) k7 {. k3 u8 C
* n8 g  }. {+ r容错能力强
4 I; t1 z4 w4 x& h
* i* B9 z. ~6 A  b译码可靠性高6 ~# l1 A* X9 W' H- e( P

# }9 M) }9 g" v9 J3 B6 Y, [可引入加密措施
" Y4 J) v" z1 H3 U2 p  y
% G; {7 b% j6 g4 Y, H成本低,易制作$ T# T/ C3 w# G% q! J" }

* Y2 U2 J1 }5 c% z1 B1 S( a; V缺点/ S. m& E2 B8 O
二维码技术成为手机病毒、钓鱼网站传播的新渠道3 D/ N* E7 E# B  q" s0 u

  u- k1 F- s8 A6 X: b- I  }信息泄密$ Y, d9 N7 X' g  w% Q& L0 N

. p. ^& \# ?, M! {# R9 f目前流行的三大国际标准
& }# w* o6 ]: n% DPDF417:不支持中文+ r& F- d5 _5 J: A! q
1 C2 V/ ?+ C4 \7 _
DM:专利未公开,需支付专利费用
0 c" Y7 V, M& p" H
$ W! ~9 G( z: MQR CODE:专利公开,支持中文
+ n6 l* w/ j+ o  e% Q% k6 I, a" z' A! q+ h% e% f, h/ h: V) M+ x. z
QR CODE 纠错能力
" q$ w$ m$ N, A0 W) Y- r6 @9 nL级:约可纠错7%的数据码字
: m( y4 J* `2 C4 J8 E+ D
1 L( m% ?/ O7 O* F0 ^  Y2 r) ^M级:约可纠错15%的数据码字
9 g0 e/ w1 [* s3 h; m# X/ T5 [& R( q$ b9 L
Q级:约可纠错25%的数据码字
! y$ T, B4 t: b) l; h/ ?7 o4 i6 i" Y8 w: i
H级:约可纠错30%的数据码字
3 M8 q% z' U1 ~. S5 P2 ?) K, ?4 n4 R% h
前提条件
  x8 P; c; C& M* YGD库
0 N# \& b2 o& S% T5 }
* ~4 P5 J8 E  R6 f* y一、PHP生成QR CODE$ \/ Q' x, F; j" `+ ^) Q- C' I
官网:http://phpqrcode.sourceforge.net/1 ^# _/ P- e: U$ H. l& f7 Y- Y+ b) g
3 d" \% S( g* ?* {( y( y$ B
下载源码:https://github.com/endroid/qr-code3 ]- t, w# l. P: h& y3 J
1 s" z* f& g% n1 M' r; ?+ H8 @7 w
目录结构
: I0 i8 B0 b! ]8 b( W9 a
8 C* _7 t0 [7 Z1 F1 H
# C4 U- R4 J3 F1、qrcode_create.php
- r: J3 J$ x& eps:生成普通二维码
$ G" t, W3 X- _' ?# q/ ^
  1. / j9 Y1 i( \2 j' Z
  2. include_once "./qrcode/phpqrcode.php";/**. `& C, z- o% Z& Z/ Z/ E; `7 s) x, B  [

  3. . w) [6 z" z6 \' [' l8 H
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    3 ^& R" o  H5 X" d4 D: B

  5. ; b5 l, E  M  O8 c, @' b/ g) C4 e
  6. * 在浏览器上直接生成一个二维码(内容为abc)! ]5 Z8 l2 Q+ P' u4 H
  7. . E: h8 D1 s# a6 W) n! y: F
  8. */QRcode::png("abc");# y; S$ n4 P; {$ G

  9. * \' q9 O- ^2 R! S4 w* g
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**  W2 [1 @( O0 s

  11. 9 q& }6 M7 J3 x# E
  12. * 生成文件到本地
    " ~" U7 ]; X# C  B  {' S% g' S
  13. 5 j$ a- U+ l4 u) a5 B% b  K
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印). K- \' |7 {9 b

  15. $ P( x( p, ^2 d% a. U! i/ ?
  16. * PS:$saveandprint源码的p6参数做了修改
    7 Y5 X" P- }8 k8 ^( P: w$ w' l
  17. ; q. N3 y2 r) I* U& k
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    0 i/ l- h' Y" |! N

  19. : d+ a) a8 f2 }# U+ p! a

  20. # k1 G0 e! N2 ~0 i" w& J8 F  g
复制代码
4 Y1 @9 ]7 w4 j
2、qrcode_logo.php
: N, b  l/ u* I  J( Lps:生成带Logo的二维码
  1. + X& d, ]5 r6 l. ]: V
  2. /**
    % M/ _, S6 Y$ e6 p; T
  3. 1 |4 V6 ^) ?3 [, `; c( ?. e
  4. * Created by PhpStorm.
    5 @6 }7 w/ {* K& T* M

  5. & H9 c9 e$ `" S; B4 [3 i  a5 |9 X8 n& i
  6. * User: user
    - y1 L, P; W# H9 f3 ]$ W

  7. : S' k2 w3 e: ~1 a
  8. * Date: 2018/8/160 n7 m: E+ h* q4 K- B4 r7 t

  9. ! T) I' F6 Q( Q9 _4 j: p0 h
  10. * Time: 10:43
    , }, C" i6 y# I- q( @

  11. 1 F# X1 W7 D) U* J2 P
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";) L4 H* {/ @9 K& F4 s

  13. 3 c4 I- h  H, q' t
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称: N8 ?4 X5 m; K! Z! n

  15. # T6 i  R' S9 D. _# k, [% a7 L
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是* P9 t4 f1 h" a1 T  c0 A- i
  17. " _8 h+ s0 ^* m2 ?! c4 N
  18. $margin = 2;//边距" g5 p) `' \. H7 S& n  A% U! P

  19. * N# |+ Q* C: b. X- f, A! @3 S! B
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片" g0 A! h4 W, q1 d. I4 s
  21. " h  g+ B- L8 {9 O4 C$ @
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   : t  K5 G( N! n  Q8 Y: K: Z' X
  23. 6 y5 T- s7 p! h5 M7 t$ f
  24. $QR = $picPathAndName; //已经生成的原始二维码图+ z2 ?) p  l1 `  m% J  w) L, J

  25. + b& [0 C& \3 r: P1 q
  26.     $Logo = './pic/logo.png';   9 M# q* Y" l' j5 Q! R
  27. : {4 o# p. \) U. r# A: P
  28.     $Logo_re = './pic/test_logo.png';   
    % y; e, ^, a# p3 f2 v, Q

  29. & U% ?6 ?, ~6 U* o# m
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ' J1 B. U) F& B7 @

  31. / j$ [2 M! u9 N
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ! _% f- q6 b* n

  33. " w4 c( |: I( l
  34.     $QR_width = imagesx($QR); //二维码图片宽度% J, K5 }' V9 H/ o2 N

  35. 1 l- p9 k/ f$ I! S  l1 K
  36.     $QR_height = imagesy($QR); //二维码图片高度
    # q  t- B0 d9 s  |

  37. : `! `8 w, C: z$ m) v( x$ y, _# a
  38.     $logo_width = imagesx($Logo); //logo图片宽度/ N7 |  W& |; Q: O4 o

  39. % n/ P, r0 \$ c( T
  40.     $logo_height = imagesy($Logo); //logo图片高度4 Q1 P1 A- \9 M3 g

  41. - x# Z$ `3 h9 Y- e) w
  42.     $logo_qr_width = $QR_width / 5;   
    . v. ]1 ?; Z* t0 o: ^0 d7 P

  43. 5 P1 Q. _/ p* g2 B1 C, ]9 Q6 m+ z
  44.     $scale = $logo_width / $logo_qr_width;   4 h) d  F$ Z$ Y" x! q
  45. 4 `. P$ x/ @9 Q% e0 v
  46.     $logo_qr_height = $logo_height / $scale;   $ u; Y4 R8 F3 _: M) B

  47. ) L) C3 Y) I( z$ w& `/ G. Z
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;9 M5 b9 K! B- |" W6 Z8 n
  49. : ?7 D* k: _: J) U( F
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   2 N  Q+ M" J( }: f* D: i& ^
  51. # s: a: k% k) E8 O, q3 U7 @
  52.     //输出图片4 K# |( O" V2 g. X2 [. o6 U5 W0 u
  53. / f) C- _, t& T0 j! w4 W: b
  54.     imagepng($QR, $Logo_re);  H3 t1 y* X/ ^) V
  55. ) D9 [( ]; C' E3 E8 C5 s- R
  56. }. f4 X/ ]) f9 A6 |+ s* I

  57. 7 }1 X5 E/ D* ]5 F

  58. 3 K$ T- @0 e2 m' M1 j
复制代码
3、qrcode_vcard.php (生成电子签名)$ E5 X! w( `( H8 y7 W9 I# d% p

$ \$ v  [' t( uvCard格式:https://zh.wikipedia.org/wiki/VCard
$ Y( W; E6 L" B, }  M; A
4 [3 {; J4 V" o$ r2 n' @, R# T. L
  1. . j9 ]: ^' h3 y5 o% d
  2. * Created by PhpStorm.9 y7 K! w- @5 E/ ~' I% T! M- P# x

  3. 8 q, D( E0 J: Y6 h: R
  4. * User: user# B4 E3 l- i1 I' [! ^2 i
  5. ) O; ^: @# ~0 P! Y
  6. * Date: 2018/8/158 w( d- p, g& n

  7. ' m) x1 C1 w- K  h8 o
  8. * Time: 23:00! ?9 b# V0 q$ q

  9. 1 Q0 U1 G: N  R$ y. H
  10. */require_once "./qrcode/phpqrcode.php";/**
    , a; l* X. N+ Q6 M' \
  11. 8 s4 P! G, H3 n! C
  12. * 生成电子签名
    & U* w) w* q% S; Q7 P8 x
  13. ; X2 n8 Z. c$ m' ?' c8 E$ `
  14. * PS;使用微信扫描二维码
    # ^/ V+ G8 n# ^

  15. 9 i: N9 ^; c) Q3 t( O
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志0 c0 S) G. ^! K9 F/ |8 o, P
  17. ' b# l& t3 M: A# c
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    9 ~! ]6 U% s  p5 a/ N5 ]4 k
  19. " q  X3 F$ e, B3 L6 p# ~  y# c2 e9 h5 T
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ }4 h8 b' T0 L% U4 W1 Q+ r! F

  21. # s0 n5 t4 u: r- S# O+ O% ]
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称5 r- \! v) T: q* A; f
  23. 3 L0 S; Q/ P% v# X( N
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    1 y( w. O0 ^- v8 u1 N; z  ]

  25. + f5 a0 E3 M' x; e0 ?* P1 j# [8 \
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话1 d  @3 g! t0 u5 \
  27. 4 d2 A; {' Q1 R) M2 R8 e
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址6 C% r! R! z: V  Y: g( Y
  29. , x( P- V- b! Y& `$ {
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    5 K; j& {7 w( t& d9 S0 `: m( O

  31. 7 I0 d. w; f" L7 z8 A( Q, S& E
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ; r, V$ f) m' \4 C
  33. % X3 F( z! {2 t1 M2 _! t
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    , g& n# g( b3 [3 V6 e' l- R

  35. $ u+ {4 e5 i4 R8 _2 Z. N: G+ m
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页7 ?9 B  d9 }" h6 w# U' N

  37. 1 v0 ]( s0 c& u7 ^* I7 T
  38. $content .= 'END:VCARD' . "\n";//结束标志% m- v3 S* r8 d, t- v. Q+ k1 m

  39. / [8 d; `' f3 L3 V7 z+ i# _! p" e
  40. QRcode::png($content);
    2 x+ c8 v0 C. a. `- G! K
  41.   n! H- }8 K$ O8 a! G

  42. $ V% ?& f7 T+ d/ i" l* V# y# m
复制代码
. X2 f3 J( [4 }2 r8 {! A
相关文章推荐:. [' J9 o7 L9 M
1.PHP生成微信二维码实例
, l6 @% z; y7 t6 b. P0 J$ x" b2.php网址转换生成二维码
0 J  @8 B8 U; ~相关视频推荐:
1 N- ^# R1 p6 A1 ?1.独孤九贱(4)_PHP视频教程
) }6 b6 x2 Q/ N9 S9 l, g& o二、JQUERY生成QR CODE; A5 E( H5 D/ n. d1 s
源码地址:https://github.com/jeromeetienne/jquery-qrcode6 D- B: W- H6 E/ N7 H) R

) {5 `1 }; `+ R. |7 Pjquery_create.php' v  K# I- V! R/ |6 w- D$ v; R
7 S: D2 Z: R, u" N: W6 W7 d
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- D( d" A1 |- r0 A
三、PHP识别二维码
0 q) U2 J5 p( T5 g  ?: c; [: e( S1、方法一
- H( y4 {0 i& y5 D环境需求,安装如下扩展
9 n4 A* G% O# z- ImageMagick+ \$ P' y" A5 C0 A6 A
- zbar* P( o8 _- p! f2 i
- php-zbarcode6 I# e% p, f) v* c# @
; j/ W! {- Y$ p9 C+ F6 s
2、方法二2 ]  T7 X9 O! G6 {. y' J
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
( g7 D3 `  E  n, g+ _" AqrReader类:https://github.com/baagee/php_QrReader
) j5 Z4 c% k8 W$ A4 L7 G- @4 h2 P: w4 f" }* u
  1. 2 V; J/ |. J$ |" [' c) c2 h) |* L, ~
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    8 T: t/ e& c9 I

  3. ' E( j! D# {' U
  4. $text = $qrcode->text(); //返回识别后的文本% N, x; d) a. F9 q: P
  5. + h7 f- d) }6 \$ {& r( i
  6. echo $text;4 ?& }( ~0 v# M4 e. J
  7. 3 Y7 K4 E% T4 i$ {2 c( b

  8. , d3 p. [  X: l7 Q
复制代码

# m8 u3 l4 `. P9 O  h链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7% \# a$ O. i: h& ?1 C% v- n

; g  Z- p! M' `# H$ k3 A2 v6 ?
& a1 Q$ \  y0 B/ S6 K- t! o. @( Z9 ^$ y2 I: Z, {
( b2 [$ ?8 _( S
9 W/ L8 h9 y) |9 ~! j$ i
! C( g9 F# P! H# W3 K" d- A" ^

5 x4 _* O' o/ m$ M- G- M/ c
4 M% H9 l3 U. ?- Y; w2 Y& H. b
* y% P5 \0 y' f9 r! g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 04:15 , Processed in 0.071993 second(s), 23 queries .

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