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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% E* M6 s4 @2 _5 d0 h6 _$ h0 b---------------------------------------------------------------------------------------------------
, w8 ]. f. h, W. j7 F二维码的分类' u4 I# C$ s1 k& p( Z5 i- J% o
线性堆叠式二维码9 w* {( @# m3 [( r0 R
+ Z% `! \* u& l" G+ @
矩阵式二维码
, J* r. u0 i6 s: `, C  ]
" I9 y8 |- T2 j% X' Q) f二维码的优缺点
# D& ?0 g: q4 H+ V& b+ q+ e; \优点
7 d+ e: R+ P1 s: ^信息容量大6 E5 B) X/ ~5 `6 v
. M- S) W( G6 G9 ]$ |7 S! M
编码范围广5 l/ E# N0 W5 B3 D1 o+ O

# D3 x% s' e9 p- o容错能力强- Z) y( f  u/ o2 C% ~* {
0 o& H; ?! C( l) p
译码可靠性高
7 Q- h2 m5 `  ~. L+ K9 T% p  }9 ~2 M) K% I. B
可引入加密措施
5 Z/ j% g7 t# s3 E  D- r8 f, k
$ L+ r" L/ W. e9 w4 I7 e成本低,易制作" g) d: x3 W, H% [7 Q, B
) J& v+ p3 h/ |& ~7 j; \
缺点( b& w9 @- |5 O, o; V
二维码技术成为手机病毒、钓鱼网站传播的新渠道, e1 C, y; X' ?( E/ i2 Y! |. j7 M8 I

1 k/ D, r9 b$ v. x信息泄密2 e: H& a! L8 N+ z- n1 a9 X
5 \/ O2 e$ ~. X) p: P
目前流行的三大国际标准8 e; W( b/ {# u& `& t9 O
PDF417:不支持中文
  ^. [' d' g! z7 F- T
  Z5 v/ _: K- z. F* w5 ~7 jDM:专利未公开,需支付专利费用+ V# r$ E& ?" B7 {2 [

% H1 M/ p! Y8 y7 N: SQR CODE:专利公开,支持中文
- u; X! }: V* c0 n4 K+ p6 c# k! _6 e7 G1 u) \
QR CODE 纠错能力
+ I: V* Y* N4 B: ?$ j8 K( z5 uL级:约可纠错7%的数据码字
" Q7 b% L: m- b
; q' a/ }2 ~2 y( z( p8 O' V( ]M级:约可纠错15%的数据码字( D) v2 U4 X) L) h. C# Q
) w9 D' u- I. J: f
Q级:约可纠错25%的数据码字
8 ]6 [% m" U3 S& E* E
  v! y& e1 t$ q/ k" sH级:约可纠错30%的数据码字7 ]' H. i& z5 x
/ m6 i0 {1 x- U" ]: ~3 a1 G
前提条件+ x4 d0 w; O! S$ E0 H3 x0 j/ N( G
GD库
, @4 y( r1 b: _0 K, j
( ?9 `( w% D- B. O/ l$ \! Z一、PHP生成QR CODE+ l$ s7 x7 i  j. Y2 I) S+ Y, @
官网:http://phpqrcode.sourceforge.net/
& _% _7 f6 D% w! M6 f
/ r% p% X+ I# @! ~& P9 ]% S9 D下载源码:https://github.com/endroid/qr-code% l8 c7 t% ?- U; R0 _" c! S' |

- M! r$ o: l5 I) J目录结构- x" h" Q* X; `# T$ N

1 I1 Y5 }4 e# a! _. P) J) y+ B' E6 Y- ]" s8 d* L5 b3 t
1、qrcode_create.php
- x) n" C) d! x  X' _# Y1 y: C8 p% B% wps:生成普通二维码7 Z! w' Y* T/ [' i
  1. 3 ?/ Y9 o, i8 M( w7 M1 n! J) ]
  2. include_once "./qrcode/phpqrcode.php";/**! X2 g% `0 B2 r4 _

  3. 5 b+ _  q" n: ^7 ?( Q% k- y
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    3 U  [0 J; l3 C" I8 B4 i
  5. . H8 O; @% i, Z" K  u( q
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 S' j, d* i2 P

  7. . n1 x3 b+ o$ W) X6 o2 P* J3 R8 F
  8. */QRcode::png("abc");
    ; Z4 u9 S; t8 h9 B, F

  9. . K8 J, }% S& e4 f( d
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**( \, s  R! [6 h+ _

  11. % l1 P. o  R2 z9 y) B! E7 U
  12. * 生成文件到本地
    " L$ d! t8 G0 m; F

  13. . Q# K4 E0 @- B) m1 ]
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ( H8 ], v# l; Q4 |9 T( i. W

  15. $ S0 b" `* `# r: D" O0 M/ L
  16. * PS:$saveandprint源码的p6参数做了修改  N4 W- E+ [$ B1 m. W

  17. # Y% f; Q5 X& _, ^! u: ^& P3 C3 m
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);% }! x5 b3 S& [1 y' m4 d
  19. + {" e, R- o' y3 r# {  ~7 ^

  20. - T) q" h) M5 s; s. m* z% Q6 e
复制代码
+ C0 ~& x1 k& n: w8 Y
2、qrcode_logo.php- D! T6 g9 o* H
ps:生成带Logo的二维码
  1. 9 V6 C2 [6 f1 k: W, G. U2 S9 s
  2. /**3 p: \7 Q. Z* p3 j

  3. " ?& c- x% v& @6 c- z" y
  4. * Created by PhpStorm.5 X3 j- h" e0 T& y+ K- X2 f
  5. / l5 \8 U, w3 z3 I/ D8 ?" Y& B. k% z
  6. * User: user
    ' Q, d; P' W" T; @1 z8 ?0 Y
  7.   q1 q) n  U3 l- ^5 E
  8. * Date: 2018/8/161 z8 o9 G- X+ w) A

  9. 5 X5 O# p) P' U  g& T0 v
  10. * Time: 10:43
    6 m# f' l- }" ]+ Y9 Z4 ]0 x
  11. 2 x! g: ~7 F" g. I, k7 L9 `
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 G/ z$ F) `4 @4 V0 D
  13. ( E, a( f. C# ^" [$ j$ a  W- }$ ?
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    % a: ?, _6 z2 E8 l5 F) Q- S% @
  15. 5 R0 q: i+ W9 J' S" E  @
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是; A, g3 _' [1 G6 ]3 }# I: ]

  17.   h+ K& x" x8 p  K0 E! k9 z1 U
  18. $margin = 2;//边距
    9 V1 p% Y! v# Y# ^. x) b
  19. ! D. k7 P* L3 r2 I, g6 q" D7 H
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片3 i1 c0 t; K: _4 e
  21. $ @  ?/ I# `* `' m
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   # x2 {$ F0 e+ X! N* B

  23. 2 \( o2 o7 D! t, ^: j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    " J: W) {+ i* b3 V+ A* M: W

  25. $ s: F3 [9 e9 y
  26.     $Logo = './pic/logo.png';   
    ( x' z/ P8 @+ {" P

  27. 6 r3 K6 [  A6 H3 Y, j; k
  28.     $Logo_re = './pic/test_logo.png';   * P- f' Q8 O* {& M; X! d
  29. - j: I+ M; ]! X, l  M# T
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    4 ?4 J+ {" z9 L1 A3 K' F7 b

  31. 0 W0 E! [& ?3 v8 ^. u9 e% @. v+ f
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ( |: l( B) F& c
  33. * o4 |) h+ r$ V, N0 d$ K$ X
  34.     $QR_width = imagesx($QR); //二维码图片宽度) g1 e0 K. j" v( s' d" Q
  35. % J- g& A8 n8 v; F' p/ P: [- }
  36.     $QR_height = imagesy($QR); //二维码图片高度7 A- `% o' d" a; x8 r6 k

  37. % x6 X& p8 Z' L# m. w
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ! ~/ {, _% T! v7 t# Y3 O: m

  39. % H# F- x/ K9 y2 _8 w5 p$ Y5 v
  40.     $logo_height = imagesy($Logo); //logo图片高度
    & \& e% |1 W* Q- D9 p
  41. 9 Y! V  d; O6 ^# F, `: v. g
  42.     $logo_qr_width = $QR_width / 5;   
    2 i. W! L6 d/ x% l$ C: a
  43. 1 [. X' l' A2 a% G& Y$ X
  44.     $scale = $logo_width / $logo_qr_width;   
    5 j) B* o' W- m
  45. 0 P1 s+ ^) D; B, h
  46.     $logo_qr_height = $logo_height / $scale;   # u, @* i! t3 @. E% Y% V% m  d

  47. + {# n; o' Q0 R- k8 Z2 ?
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    # F7 W" l* u/ n4 I" f  \
  49. 4 Q; D2 b' ^( o( L
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   : n  f; F* U, e

  51. ; d; @% X) c$ v, q- {8 p' ~, @
  52.     //输出图片
    / A0 Q3 B; f9 I) u1 B
  53. ' l, M/ d  g# J% P3 c- I1 Z
  54.     imagepng($QR, $Logo_re);: e& n% v0 y- v1 m$ {+ b6 ?( D
  55. , I* a/ d) ~8 _
  56. }5 `, Z  w' w2 E; ^9 ^' |
  57. 2 {  Z- g* X) {$ u: }
  58. 3 b7 n1 W3 d5 i$ n: }' d3 q
复制代码
3、qrcode_vcard.php (生成电子签名)
; w; B% M. Y; m; J7 i
! Y6 P( F- H7 K2 @; HvCard格式:https://zh.wikipedia.org/wiki/VCard- S3 d% [. I# J( ^4 y6 U9 N
9 d3 T& |5 f5 }0 y$ W$ ]; c
  1. - Z) h1 z4 ?  V5 o& @
  2. * Created by PhpStorm.7 |$ |# ]- b% H" i) q

  3. # j$ g3 ?: x8 {: a( V7 I# w! ^
  4. * User: user
    ' p& Z3 f: ?' K- h! m1 `
  5. 3 ?4 q+ w8 z& U8 }& G0 L
  6. * Date: 2018/8/15
    4 a5 g1 g; s/ ~- ]1 K
  7. 8 H4 ~: u! U! q) U
  8. * Time: 23:00  J- }; Q" l/ @% P
  9. 2 P5 U3 A8 }7 e
  10. */require_once "./qrcode/phpqrcode.php";/**5 B8 V) p6 l( B0 [. q+ `4 r' A# h
  11. , v: l1 t) i% q( L" e0 Y
  12. * 生成电子签名2 h/ F, s/ ?! T' D

  13. / r  ~# j. }% H; }
  14. * PS;使用微信扫描二维码) f& F' I* W. A1 l

  15. - [7 Y8 W% i% P( M
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    7 Z; u. @% k1 ?  g

  17. / i/ t: E: F, V: E# f, O
  18. $content .= 'VERSION:2.1' . "\n";//当前版本! w5 S2 X$ }+ a
  19.   \0 ?( v* R5 @3 \' [* m
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    9 `' g5 K2 W2 o/ B2 b5 O2 z" H

  21. * z9 z7 ~. J% @* ]: N- t2 _1 e
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    / p/ h7 w8 L$ P# O3 U

  23. . O/ o4 y6 E& }1 ?. E' D8 i
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ! W& e  U, x* g% R) |) A6 `$ o
  25. ; p; t6 p" J: N
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    7 u0 H* L9 M0 \! S7 i) R2 }3 T

  27. ! @) I+ ~# R1 x/ S7 j
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    9 c* N9 O9 X. {1 ?6 R7 B9 e
  29. " i3 ?3 ~( w3 U9 T5 D# {
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    " h% I. H) ~+ ?. \- F6 p0 I: @7 I5 p
  31. ; p  d" {( c' r! @2 s4 o* Q& x
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话/ X+ I7 V+ L4 ]9 S* k/ u

  33. ( \# _0 W) q( Q
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱0 j! j6 h% }) O' V& z: E, w

  35. $ F0 o6 ?7 u% G$ @+ m
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    % j" m- H5 s& J/ Y0 }
  37. & {7 U' A1 u0 G/ l* j5 P( A
  38. $content .= 'END:VCARD' . "\n";//结束标志
    , u) D' h: }8 d, f  ?2 `
  39. 0 g; E4 D  c( c$ ^
  40. QRcode::png($content);
    ' o3 C' P9 t/ T/ c8 q

  41. . S( T( k2 w& Z0 d
  42. 6 T) s  I/ A' P! r; k; o
复制代码

1 E$ `, m; Y' {" J. c8 h* ?相关文章推荐:! A. Z7 X- J) Y! m; N
1.PHP生成微信二维码实例
! `% V7 p9 }5 Z- T4 q" M9 c2.php网址转换生成二维码
$ E' s7 z! I3 h- s4 Y  k相关视频推荐:' p4 \  |2 t) ]+ ?3 h- j
1.独孤九贱(4)_PHP视频教程
- |! h( Q( h  u' s; l% g二、JQUERY生成QR CODE& N1 P8 f9 F2 H. b; P" T, B
源码地址:https://github.com/jeromeetienne/jquery-qrcode0 L1 ?# M# k4 H
' L- Y+ _" ?+ e* d( _% }$ q/ n# z
jquery_create.php
. f. B+ e+ l% s) B/ \  q- I- E3 n& o8 _, H, {0 w7 Y, A
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

9 J/ l$ I; B+ z6 E三、PHP识别二维码0 p3 z6 r* ^( u+ w, a$ i( _, }
1、方法一) t. @7 `( F! ]
环境需求,安装如下扩展
( V) q% o  g$ r" ?6 X2 s! o% E( E- ImageMagick. x' M! W' K2 C' }) n7 u
- zbar: s" W1 ^- w% u: X5 ]% L( }) _1 o
- php-zbarcode, j9 x$ L7 p5 m) O4 V6 h
& a" t- }. M/ e; w
2、方法二
/ ~" N0 e+ r$ v) qPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以2 ]& ]( C; e7 x8 X
qrReader类:https://github.com/baagee/php_QrReader$ M- F7 d) b2 o$ x0 H" [

, y0 L% E' }6 C4 r. M: k' O& i

  1. + m( N: v- [$ }1 A0 M
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    $ K/ F6 O  q0 x; _, j8 q

  3. # g4 E/ Q4 B, D9 Z; |5 I! o+ y
  4. $text = $qrcode->text(); //返回识别后的文本) Q, E. X( x& Y" F. o

  5. ' d" F* e7 l9 Z. p9 |
  6. echo $text;( P3 z6 ?4 U( r% _8 T
  7. : {# u7 {" ]! u% S
  8. , Y5 \% [4 Q# d8 ~$ u  @$ c' w& [
复制代码
2 C( Q1 d2 X8 m( n& j
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
8 K7 V. R5 j9 `! a4 \
5 C+ u0 l5 w7 Z; Q. ^+ I9 S. E7 A2 |' M
% x$ ~* S% H+ |7 f, {! m* A  w4 `( }

. T4 I' W0 m$ i( e
, e: _( @- ~) a( w* d
+ z9 {1 V) {; s0 h! f. a; k
3 G) g# j. O% j9 V' y. a+ v4 O
' h" t" e1 n$ v, u* w2 o0 y1 [: i- X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-6 05:17 , Processed in 0.113991 second(s), 22 queries .

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