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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13170|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% U1 l% P; ~. [---------------------------------------------------------------------------------------------------
4 t; s, R9 l0 j+ j; A二维码的分类1 ?5 w9 ^' C: \( C
线性堆叠式二维码
, F2 W& |- [" o% i+ I% o; J9 e( b: O# A. I. ?+ W3 F
矩阵式二维码
1 g' h  Z2 G3 ^8 k
& i# [! x" A( \- R1 T- n: g二维码的优缺点( E( y' o2 h2 `: ^7 o/ m" U
优点
9 p0 `& h2 _) y信息容量大( i' r6 K* R. r2 Y5 c3 ?5 k: }

( M+ G  G3 ^$ Z+ |编码范围广
7 b7 d$ K9 S( Y- u+ ?6 o5 H) e. v# c. d
容错能力强5 K0 j( H' ?& t: j7 S3 J" B9 s
6 F" d% E$ h/ W
译码可靠性高
1 h3 v* {# L- i# {5 Y, f( u  p- r
可引入加密措施
$ j, ^7 S/ z" h
- Q4 j* u; d- Y% W- _! p% k成本低,易制作
% c! Y9 k2 ^# F
3 f2 x& s3 ?* H0 N+ B) P) k5 K9 y缺点% M- v+ r% o0 y9 v" F1 w$ K. e
二维码技术成为手机病毒、钓鱼网站传播的新渠道
- m" W- @# s2 z) b# B6 v& [1 m* d$ o1 D
信息泄密0 u* x& J* Q- e0 j9 F8 i
& H8 k7 E* F1 \6 V' b' V
目前流行的三大国际标准) ^' w" f5 J, g/ p8 T# V! V3 F
PDF417:不支持中文
* }  W0 D0 y6 s* c0 d
6 m; d# V5 [# I3 n% g4 GDM:专利未公开,需支付专利费用/ I1 W* H2 e$ R: w; F
( e* Q9 A: T& V5 Y1 F- ?
QR CODE:专利公开,支持中文' F8 [( {& ]" x5 y0 g) }# X& \
: Y6 r. U' ]# O: s) r
QR CODE 纠错能力0 R2 N. |; O9 Q* H
L级:约可纠错7%的数据码字7 a; X8 p$ J" b$ E2 ~1 f: V! n
. y* a$ b4 u" m* E0 Z) S) F
M级:约可纠错15%的数据码字( |5 y/ h9 ]  n0 m3 G2 L' J) H1 ^

* M' `' R7 l8 jQ级:约可纠错25%的数据码字
& S- G3 r3 w6 S; W, a& I* t; x& J! x- Y0 [3 \4 B4 W7 p2 n% a
H级:约可纠错30%的数据码字
' ^) @% e* z' L1 K+ R7 _
3 |5 t0 g3 Y$ l前提条件- c( b5 A; W" w0 G! d# u
GD库0 a" K- l* n4 C) }; Y. c3 Q& v; A
) [* }6 [3 z" Z# ?" E/ [
一、PHP生成QR CODE6 W% a# ]4 a3 H, Z: j
官网:http://phpqrcode.sourceforge.net/
% ~3 [* R! M. T
/ X! K# H/ V! ~2 H; p: |) c$ h下载源码:https://github.com/endroid/qr-code
2 o$ y% T! ~) o4 o6 _6 i- X$ C
9 v) l0 `; @5 l8 w目录结构  I: c$ b& ]! T" Y# E) q8 R' {7 ?
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
6 L+ d" ^& `9 B0 K( ]9 M) ~# o! Z! T6 K  `0 d7 g" {( _" k
1、qrcode_create.php
7 T" {3 z6 T% a& Q6 n) bps:生成普通二维码
- r: m+ u& l. @( g
  1. 0 W7 R# @4 m5 z! a/ R. O8 u& E$ y& Y5 `
  2. include_once "./qrcode/phpqrcode.php";/**. z7 \7 I& u5 z

  3. + b8 }! ~5 o9 N0 R
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径; J! A# H* G# V! r  M
  5. : M0 F" P) X: |* {7 g1 J6 X: v
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    5 o  q% O3 ~& W$ ~
  7. ' m. d; W8 c9 D2 u$ ]; M$ A& w
  8. */QRcode::png("abc");" T9 `' `% j! I" t. N4 Q8 ^
  9. 5 j2 e* p' ~& I' E* ?/ @
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    / _1 }% n) r) o1 ]" p/ U
  11. ; k5 s7 t& c' X( B# x
  12. * 生成文件到本地
    7 R6 I8 y/ W, C$ P9 p5 t' `
  13. 3 }- \2 Z* h/ D. G
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ' t- B9 m7 L, O3 ^# b

  15. - C* {- i' G" Q
  16. * PS:$saveandprint源码的p6参数做了修改
    ; v' ^) c" Q$ B1 n& e5 J
  17. 4 H( y% ?* R1 ^! b+ M
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ K/ X9 W  n' T  g* |- }2 t4 S

  19. + Y: B  H* W+ Q$ f1 _& i4 z

  20. ( W0 j" m* d! [( o
复制代码

6 p4 e% N  e. Q7 f! U2、qrcode_logo.php0 W" O! v3 p- v0 o! w# ]
ps:生成带Logo的二维码
  1. 2 J2 _, n# o0 l% ?) B6 x" x
  2. /**" V1 v, a- h0 h* M4 V
  3. . ~- K, k( _0 B) V+ u5 [
  4. * Created by PhpStorm." R3 b/ k1 V5 z" A; I9 ?; N
  5. 5 p# I6 y& C" ?# q8 P$ V3 `
  6. * User: user3 l0 Y0 G! y) Q' E5 A

  7. 2 {$ I1 ^3 c$ Y/ j
  8. * Date: 2018/8/16
    * j! i* A" G; X" k/ }
  9. : T7 q6 r9 K3 ?9 q% l- @
  10. * Time: 10:43, y" V  m4 k; n% Z

  11. - v! Q8 P, E5 t
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    6 X: E+ y4 o4 w7 T4 C

  13. 1 S: O; _6 F: K% ?/ Q" q% z. p6 p
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    5 t$ C3 |% ~! x5 E8 N# F; g
  15.   T0 t: Y+ D7 y; G2 h
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ v) g5 j4 l- h4 W5 U

  17. 3 |  C, K9 n) @7 E( ~0 t
  18. $margin = 2;//边距! S( v! m! y7 l/ [7 V% s
  19. / b/ E2 c0 w( X$ ]
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片& f/ n' q! _9 E' U

  21. # A+ J) |/ Y8 n5 I
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    : r5 T# p7 k6 T" o3 H% q9 w
  23. ' R! ^4 E! f: D
  24. $QR = $picPathAndName; //已经生成的原始二维码图7 d) j5 {( Z  D4 c8 w

  25. ; c* c, b, `( }- ]
  26.     $Logo = './pic/logo.png';   
    . r  ]5 ?+ n" P. m5 r9 O) T

  27. ( X* M2 o; k" Y( b! k% Z8 F
  28.     $Logo_re = './pic/test_logo.png';   
    . k+ |: k$ F! U" O

  29. ( I$ }% [: {$ \$ K( i# I# a
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ; B. h% _/ M+ h- t, s

  31. : N5 p, E7 n/ {! q) q+ t
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   3 O9 r- S/ N4 I9 |; \
  33.   q$ W0 t( P. z7 n4 p! Z2 s4 Q, t5 ?
  34.     $QR_width = imagesx($QR); //二维码图片宽度  l4 W5 r- `+ s3 r0 y1 }- b: r$ P9 f' B
  35. 5 m1 q7 E9 u: b) f# ]
  36.     $QR_height = imagesy($QR); //二维码图片高度
    # |/ ]$ [2 R/ R) @
  37. 8 S7 ]' T9 t  l7 ^$ d1 P
  38.     $logo_width = imagesx($Logo); //logo图片宽度" B3 Y% [7 h5 N8 s

  39. ! O' E3 [  C% `
  40.     $logo_height = imagesy($Logo); //logo图片高度' q  e' y% \3 h# X- r- N9 }
  41. 6 D1 a; v8 S' |1 L3 A2 u. R
  42.     $logo_qr_width = $QR_width / 5;   
    ; u1 S( b4 z: B* o
  43. 7 K# i, |$ ]! C( `7 N  P
  44.     $scale = $logo_width / $logo_qr_width;   
    8 v) h& n5 f! {) Q; o1 ~

  45. ' r, W0 b: ^5 K  n: T! p5 m1 T. `# G
  46.     $logo_qr_height = $logo_height / $scale;   
    ) S; R- N( ?( W
  47. % z7 w% _  H, p$ ]0 t1 [9 F: x2 G
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    * f; s' [; f: T1 a

  49. 3 J9 I7 r$ n$ Y/ l! Q
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    7 M3 c# ]6 S; X: L- ]

  51. 1 S7 I7 j  V# O4 n/ g( V$ a
  52.     //输出图片
    " ^1 ]4 q3 d* n. k2 |2 }
  53. 2 {# l- \7 s7 B3 b: |3 x
  54.     imagepng($QR, $Logo_re);3 G! U4 k" _9 Q7 ~
  55. 4 q! X7 w" i  I
  56. }( R. _4 q. O6 B( c0 M4 o2 a

  57. 1 X, I, B" \5 r/ ~% R% N

  58. 1 i! v1 G7 C- x. e, f4 J
复制代码
3、qrcode_vcard.php (生成电子签名)
8 U, c  c$ t2 p/ S) c+ r
' ~2 b0 q# X9 k4 A; nvCard格式:https://zh.wikipedia.org/wiki/VCard
  b- T0 `8 q8 A6 l# ~/ K% F) W9 T8 f/ ~& a: E/ R( E3 n
  1. 6 j0 A3 h' o% m: k; s
  2. * Created by PhpStorm.3 v, k5 P( C% W. o# }

  3. 6 G& p  l" \5 U
  4. * User: user9 i/ }& `# l* z- Z9 ]

  5. : I2 H& M* V! R' t1 l4 W* k
  6. * Date: 2018/8/15; C, B9 H' w5 ~

  7. 8 @4 y) v( `- `- p
  8. * Time: 23:00
    $ V3 I( e: a' Y( y- ?

  9.   Y/ I& f- o( T( S0 G& l% v( I
  10. */require_once "./qrcode/phpqrcode.php";/**7 L$ p; A. S  o% l+ k
  11. " z* c% i+ ~. N" W
  12. * 生成电子签名- l: v6 g: t* K! w9 ~& t# ^

  13. / P0 G' S, O! f: l( ?
  14. * PS;使用微信扫描二维码# l& d1 e+ Q: f. p* N4 q

  15. 0 W6 v) N. V1 d. Z! t. v
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志6 {0 K2 D7 ]1 R( X* n% R1 @
  17. 4 y0 x# b7 p; S0 @( ~0 M1 C# E
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    1 a0 X0 |' I! N7 T. k

  19. 6 R3 g: }; \" }- ?9 b
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 C' @. \9 G& t' c$ z6 P3 P# \

  21. 4 X: ]5 I- }8 _7 x% Q* T8 G
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    0 G1 Q) [* o9 l9 o) X, d

  23. 1 V$ b" q: c. K  O
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位, ~. _7 @" p" X9 P

  25. 0 S( E7 x/ |$ D" s6 @
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话- g/ D" w; `+ @$ u( ~5 Q- A" k

  27. ; [* w! J1 n6 ?( F  Y/ r5 T
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址% c# k9 A- }+ C* H) Z8 `
  29. ; O% @2 k% N+ d4 R( b, \
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    4 h# s# i+ b( ^/ W" W

  31. + F. y' ?! R3 \( i. S
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! s+ S& ^! P2 b: H6 ?, o0 O( p
  33. ) k! M, R) M5 o9 o8 y* \
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ' Q( }& T, N4 n/ h+ f
  35. , V% R* I/ Y. A' w$ f5 O, _' J
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    4 A9 G& R, @' T/ L% T3 c; M
  37. 4 M6 h- v9 U) ^
  38. $content .= 'END:VCARD' . "\n";//结束标志2 f: [; @2 V6 w; y- o9 U" q

  39. 1 Q. F& B% H; S) Z8 c% a
  40. QRcode::png($content);
    2 Z3 ^& X! I2 u8 X( A; b
  41. 6 W' c" G' f+ ~3 g) ?" T. e3 e
  42. ! e# B% p7 o% L4 C! H, o( A( A
复制代码
5 @: u" V8 p% a8 a: W4 c
相关文章推荐:5 H% R& b8 c0 {& j
1.PHP生成微信二维码实例# y7 M5 A  v5 H
2.php网址转换生成二维码
* _( b" Y4 A9 f1 Q相关视频推荐:
. ]+ P' L+ x+ u1.独孤九贱(4)_PHP视频教程$ U& f& U" ^( H6 w
二、JQUERY生成QR CODE
  t' _  o0 o" O" g6 i9 t源码地址:https://github.com/jeromeetienne/jquery-qrcode
+ N6 \( ^$ m: B/ M2 \/ g2 B; v
! ~' \& ]2 d5 f  P2 ?. Ajquery_create.php
; U5 K+ j; ], w5 N/ z
4 |0 j% u2 P  ~
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

  e+ C) c4 [7 {/ p6 W2 M三、PHP识别二维码
# l5 s) I5 S5 {$ b" E$ q8 f1、方法一# j2 U  B$ z7 O5 m- g  l
环境需求,安装如下扩展
8 u) \. `* z* {- ImageMagick
# L: s0 j7 }4 W- zbar: _' T4 L" L# D1 [
- php-zbarcode
6 I, f7 X1 I' x
# X- v3 n! ?5 K" k2、方法二0 m2 p0 c2 A8 b' z# D: K
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以: ^; M( O8 H* j, s
qrReader类:https://github.com/baagee/php_QrReader
8 {# L; R" ?6 W; K* x0 R4 y% |% f3 ~4 u- Y- Z$ y

  1. " G' D1 ]6 m) v9 s
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    , I+ \: e( Y8 a5 }

  3. 1 O% r3 l# ]  t- d& d+ r! x
  4. $text = $qrcode->text(); //返回识别后的文本
    & P% @$ @2 b  d1 t; ]8 T. W* p. C$ B
  5. - ~, p5 a3 W5 N/ R
  6. echo $text;4 V% v: O1 x4 q* l. O9 j7 ^# A% l
  7. 8 a. X2 O- ?" ]' ?& i! z9 `6 J

  8. ! B# [: N0 Z0 Q! Z1 n
复制代码
9 y. \5 V6 t& a0 y
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
6 a! R5 ~- A: [* o% f
9 k- U% `" ~% k2 r/ s' {. _/ z" b  h$ l5 c' I4 J1 t
: I' d4 a' P. G3 `
; b! h! x9 {$ i& h. l9 ?. U! R1 U0 k

2 @: {& O# V8 t, c, f' T5 q- S1 M8 [" m" z
7 M: m3 i0 B# D9 j7 K5 o- k9 W
* r8 e, V# E8 {2 J

5 x8 W1 ~7 [$ q  [2 e
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2025-1-13 05:26 , Processed in 0.134206 second(s), 25 queries .

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