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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
$ i. U9 X2 W. i' H5 s---------------------------------------------------------------------------------------------------4 B; x/ `: H+ b1 ~8 _$ m( ?
二维码的分类  O4 d. p! r/ D1 ]9 T
线性堆叠式二维码  m  B& T# {: W( T( L/ g
' ~6 w2 H8 n/ {. a/ }1 y( P, T, p
矩阵式二维码# i( z, G1 m8 x' ]* y% ~) F3 i
/ ]9 ?& e( {" `$ C! M6 Y
二维码的优缺点6 Q0 W6 F: V1 t& ]: F  G% u! X: x7 Y0 u
优点
! g. F7 E3 r+ T# N% _8 E信息容量大
  g4 U! W- {( U7 Y5 @6 P: P* W+ h3 ~7 R9 J% q$ W
编码范围广
. A* K! r; ]1 t# `* \5 }' {# ?
5 R# g4 O' d1 @/ q# `& ]. K1 M8 C容错能力强4 f5 \( U5 l1 {0 H( @$ [& N  m
3 g  O) q2 g6 J/ j7 x/ Q
译码可靠性高
1 _/ W( a: J" R9 p9 I( _' I8 a, X1 w8 l
可引入加密措施( r: K/ {4 T% d
5 f$ |. F, P5 g! D4 h5 U0 _
成本低,易制作: ^/ F8 N. |% i- c

+ B; s: r0 `5 S/ A缺点
- x- z. [8 M1 ?; f. b二维码技术成为手机病毒、钓鱼网站传播的新渠道
+ d6 [# H/ M) j* e3 R2 Y" q
$ W! k% V  @# l/ Y7 I信息泄密* M, `- O  k  W5 F  M* W
6 G( t  v1 t9 ~
目前流行的三大国际标准
' [( F3 q# \2 x  a' K3 n* OPDF417:不支持中文* h: [$ Y% }9 L) l
) q/ h7 T' ]) p: N
DM:专利未公开,需支付专利费用8 Y+ L' B+ M9 N
. Y& L7 z; q+ I3 o& J
QR CODE:专利公开,支持中文
6 Z6 q$ c3 W8 @" Z) g. z; r( W  N# q- ]1 ~- T
QR CODE 纠错能力" ]) K! ~) A( N$ k9 K* K
L级:约可纠错7%的数据码字
, w, \) J# p' @( L: F1 \7 ^* }8 w
/ ?8 H; J: z  k. v- @: t+ j% y: jM级:约可纠错15%的数据码字
* F: H8 n4 n, E7 u+ z  Z: O6 Q: W! n5 W7 s% E
Q级:约可纠错25%的数据码字/ S5 ~2 H0 |+ ]$ @' t! S5 V8 I

0 U! @( y& [3 v" C9 A# H. d0 vH级:约可纠错30%的数据码字
. I* P4 s$ _& \# j' J: B1 E4 d' Q2 s
前提条件  a; v& s0 Z: x
GD库
1 Q1 C6 z% p* {5 i* {4 H
, K- i4 `* T" G( p' ^! N4 C/ X一、PHP生成QR CODE
5 m2 k* v9 `4 l( y; j+ W, Q8 ?官网:http://phpqrcode.sourceforge.net/
' ]$ }/ h. ~( o' C( t
' ?4 K+ }# i0 B7 A$ w& S下载源码:https://github.com/endroid/qr-code
9 `. T- I3 V) {+ o$ o$ N1 \" k1 G+ I( b7 F4 o* c1 _2 K
目录结构
% Q9 Y! o% |% { 7 {7 Y# x+ W5 A! X, x
5 ^7 u2 q5 c; J" G% _
1、qrcode_create.php% j# m; {* c* z- @% V% X
ps:生成普通二维码
* p- a% m+ H6 Y5 P* h% l/ l
  1. 9 G5 J; t, @1 C$ V7 W8 \
  2. include_once "./qrcode/phpqrcode.php";/**
    5 Q6 e# p& p6 B

  3.   ~1 u7 t& Q5 @' N- |
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    9 ^( L7 C! z  `: r& {/ P
  5. 4 c* a1 G! A  X7 _
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    2 @' M) v% @* D4 H  i! [9 y2 H4 \5 c
  7. 0 V4 y% w. F0 d4 N" C; {. l
  8. */QRcode::png("abc");% ~' i  E! V" ?7 n  H4 w

  9. : @% m/ n$ h6 ^; v, ~* h! I
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 c  P; u8 F7 l* x

  11. 5 d) n3 S# P1 N% I2 m0 }
  12. * 生成文件到本地
    6 v9 t: i4 U- r8 f/ a; ]6 r2 D1 Q

  13. ' e# C/ @, [# g9 i1 S1 c5 v- y% r
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    " E8 s- p) B; x0 `- c2 n
  15. 6 }- [/ A; q+ G, W6 g+ V3 r! i2 L" D$ `
  16. * PS:$saveandprint源码的p6参数做了修改5 D+ l: z+ v) B9 ?# i  j6 j4 u' v

  17. 6 A# J, \% {+ v& ~6 Z& {
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    $ ], @! I5 i) }2 e1 E8 {; o$ I- C7 c

  19. 0 d/ Z7 t9 Q: {: B

  20. 3 a) e7 K5 C9 T# A) |" ]- w+ F
复制代码
) n9 r3 I& Y1 y& g2 c# X0 u
2、qrcode_logo.php
3 s. K( \( c4 ]# c- g7 nps:生成带Logo的二维码

  1. 9 j+ X" B* J# [$ t
  2. /**& X  D4 F, C* q/ Q
  3. 5 R; J0 F/ w3 q6 [
  4. * Created by PhpStorm.6 \1 T8 r2 }) {

  5. ( ^$ K) ]9 ^1 G
  6. * User: user
    6 r# w) \  ?2 ~3 A( `
  7. ) ~7 P0 K. c: p  Z
  8. * Date: 2018/8/16
    ; d  _: K8 y" [+ C4 a) j
  9. % c( J& _$ ?) ]: ]
  10. * Time: 10:43
    * P  b6 K" T, a) Q6 P1 s  w& q

  11. - L% O: {$ d' L5 x! O2 g
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 o" p: s3 a( N6 A

  13. 1 k5 F2 q5 j- G0 e& e; G6 Y
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称  f3 z1 F9 u  G5 v
  15. 2 Q) _; V7 x! r9 x% O: a8 U: U' q
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是* c* Y) h( q2 R# r3 \

  17. - u( p( {/ `' E/ A6 j6 v4 Z
  18. $margin = 2;//边距
    / _& H/ U' j( Q7 f! T/ |
  19. ! I+ u! E6 u9 _* W; f$ d' A
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片, ^0 h) ?. h+ K: g- q( ?
  21. ) l3 o- A0 }* b7 `' }
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   # y9 B# r0 Q9 R7 {; Y" W
  23. # ?' r& W- E+ c$ B# ]& X
  24. $QR = $picPathAndName; //已经生成的原始二维码图5 t9 x9 J' z$ F5 n

  25. 0 S" ]! u% H1 `# s: ?
  26.     $Logo = './pic/logo.png';   9 |/ l0 _6 M% s0 q5 U

  27. 6 I0 D. f, |2 d9 n) h4 e
  28.     $Logo_re = './pic/test_logo.png';   
    3 p. ^/ F$ v" ^) w8 f6 K- i+ L  ^
  29. ! w+ R: ^; T' O: J0 `0 _7 N
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    : o* _( H# _" Q5 o' r
  31. 3 |& s: H; c  M3 S& U
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ) A9 S% a9 e7 V, W9 i1 M5 |" o

  33. % w  s% ?& {! w1 P- {
  34.     $QR_width = imagesx($QR); //二维码图片宽度8 O1 G9 G0 ?7 d# P+ r& }
  35. . |/ Y# P/ L1 M8 E/ C- ^+ U
  36.     $QR_height = imagesy($QR); //二维码图片高度5 b) I* J" h% b# N' t
  37. 3 L- R7 y' G& P4 g
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    & J8 d, O: E; X; B7 d6 ?0 j1 _

  39. 9 F$ y' L0 S  w: K: N
  40.     $logo_height = imagesy($Logo); //logo图片高度# ]" h' V  Y$ J1 q. ~- \. A* Q

  41. 6 L& V$ S: J% W2 Y
  42.     $logo_qr_width = $QR_width / 5;   
    8 X( V. `( S( Y
  43. . d  d1 J# g) ]7 {% Y/ ]! a3 p
  44.     $scale = $logo_width / $logo_qr_width;   & `& e' @( a$ T( i* P: J% l2 O
  45. 5 l8 t7 T9 y1 A& l8 k" p' L6 R
  46.     $logo_qr_height = $logo_height / $scale;   . I' F/ w5 g- E$ o% T  e

  47. 6 h  s8 A% i: y' Z0 p, F
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    1 R0 n" L* ~1 q8 r) X6 s+ `+ y  h
  49. ; ^0 m" m' _0 E3 ~
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ; p. E& `& k+ I" f/ M
  51. ( @6 u) s% e# t& O8 p; }7 [2 M
  52.     //输出图片$ T8 V) C+ y* p, Q# t8 y, x

  53. 9 d$ A1 \  o( K' A1 F# o+ t$ c
  54.     imagepng($QR, $Logo_re);, o1 y" C) U0 u. `7 r, O* _7 M
  55. ; \- Q/ i. d4 F0 @
  56. }
    2 L3 d6 X' r) F4 M1 K

  57. 3 m$ O  U/ {2 h- A7 D: F' h& X

  58.   A+ [4 y! o2 }) |/ C8 Z
复制代码
3、qrcode_vcard.php (生成电子签名)
' Z% v, y% P! J4 n% P6 w7 u4 i% N7 A1 A1 Q
vCard格式:https://zh.wikipedia.org/wiki/VCard
* }" z6 A! R4 a1 t: `
, X% H6 o! q  _6 ?& I

  1. " q% o  H- Z+ k8 R5 @
  2. * Created by PhpStorm.9 j" K" L5 d/ ?* a3 U0 I. F7 _

  3. - r( T5 D2 H% y1 m# @& i& J
  4. * User: user6 Q- Y0 N8 ?" x+ o* F) N- s

  5. ; k* l/ [$ U% [: y! L% \0 }
  6. * Date: 2018/8/15/ ^/ a7 t8 ?6 q* h' e- P/ C

  7. & `3 o/ G% W8 Z  I2 m+ M
  8. * Time: 23:00+ Z: I; f4 a. w/ I' v  D1 P- q6 \; h
  9. * |7 p- B6 n1 C# q' R
  10. */require_once "./qrcode/phpqrcode.php";/**4 r& ?2 A" g3 m! i4 s* u2 s
  11. * B2 I  ]" O, M# Z; q: O, o  n9 A. V3 H
  12. * 生成电子签名
    6 s( }: \3 _" @8 f9 U# {

  13. ' F) R8 ^. ^6 I0 H$ J8 `8 r. F
  14. * PS;使用微信扫描二维码
    8 f. B6 f' {2 X' f2 z: m( x

  15. 9 N5 l  q$ q8 h/ k. O& P+ X
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志3 C. _1 Y/ y4 [6 {

  17. / I# _; w. ?8 X+ l" y
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    4 }3 q- v5 g+ f9 a4 q  ]1 z( J& x
  19. - \/ M7 E6 J+ H# v& X
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    # [5 b2 h. k! w3 \( I: r
  21. $ l! L5 N+ R7 G0 @5 t& ]
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    3 p9 o# n( w: j$ h+ E
  23. 9 I8 V. k8 ?) e
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ) s. b0 M: F8 h* s' K( a5 L
  25. : o$ c+ c* ~4 [# d6 n& H
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ( J4 w6 E+ Y( k; E8 i  G( n, m
  27. % K* P  n% k3 `
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址* |! e0 ^/ V) o7 ^

  29. & M3 F" a- Y4 ?4 u
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)& O/ P5 ]7 s7 G0 d3 T  b. y/ x

  31. / {' ]3 ^2 w1 e, G- W' o. E/ i: r
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    $ k# X2 G4 @4 C# `2 h+ ~

  33. % H1 ^) u* e. H
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ! j8 Z9 O4 M0 W! i9 t0 D6 I
  35. * H, {( b  r& [% T1 D7 B
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页5 r5 L0 g8 R3 L! t- Y
  37. % \! q) g  \" u; O! n4 `7 Q  @
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ( F6 m( J3 j4 W2 [4 s( E: S

  39. * ^4 u) e% c6 h* w8 U5 U
  40. QRcode::png($content);2 h* g# m: v. E/ n7 W2 B5 l4 D

  41. , T. f- W, m' L) e: W! B. b( _+ U

  42. / F7 I0 `# W7 C4 P
复制代码
; b, ~; g) T# X7 z6 M) V: b1 f
相关文章推荐:- G; C" y. f- [" M8 e+ h6 t  K. C
1.PHP生成微信二维码实例
; _9 D6 a' v3 Q1 K2.php网址转换生成二维码
* T/ s8 @; z& V% P: a: V9 ^相关视频推荐:+ X# o8 z1 z: }5 Y  x+ W" o6 m& m
1.独孤九贱(4)_PHP视频教程4 x9 ]8 e9 z7 N9 p' E( {4 W- d
二、JQUERY生成QR CODE2 g, J0 D8 ]4 u, c; b( Y
源码地址:https://github.com/jeromeetienne/jquery-qrcode) c, a$ ?0 [, _' w9 i$ D
3 K* F5 e! s1 F: u" C
jquery_create.php
8 ^- q, s9 @3 Y8 v- T3 V
/ D$ a8 v5 @# j+ T' m+ }1 q
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
, K' l6 @3 O0 {+ [" E" a8 o( L$ k3 K
三、PHP识别二维码& v! U' J- o) z4 L
1、方法一9 n7 i8 k) p0 l1 m4 J" g% Q8 T! s: X
环境需求,安装如下扩展
* t+ x. ^9 a2 g# y- ImageMagick  E  @( m+ ]* k3 @8 c
- zbar6 |7 c4 S9 d9 \2 w& U( k. u) D
- php-zbarcode
! e; c! n) P0 S* z7 A( d
  [7 `+ G! M( r# N2、方法二' l( m3 @( Q1 ?1 {( Y! H" @
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以/ W3 a) g  t; _& T) r/ ^
qrReader类:https://github.com/baagee/php_QrReader& K& d% [) @* Z, J0 A# k/ G0 B- O
- J) G/ E/ `) F. t4 y) Q9 R

  1. 6 C5 t( E. h# z! F
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    , Q' {( k) B" _7 H$ @, W' J2 ^' W

  3. : ^4 a) J# l/ F
  4. $text = $qrcode->text(); //返回识别后的文本
    1 F/ V+ }( g* m1 I" ?
  5. ; S, b  E- \' ?- b
  6. echo $text;
    + L( m) C% I1 f5 _: e. F" x1 e$ `

  7. ! C. I& {9 u8 x7 i0 q- H9 \& t* X

  8. 5 J4 J4 u% k! c# r$ ?8 i- C
复制代码

+ P% Z- q( v; h0 r链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7; X6 d: N) Q/ A9 J
/ m# }% a! L4 Y" i) N# _% }6 {
3 f! ~- l3 a" p% i% ?5 E5 l* \

7 u  j" Y* ~8 U0 q- d# i/ d& D/ [$ Q* V/ r/ ~
- @8 ^6 U( O0 u4 N/ g% z
6 T5 E3 O, c+ ~' p
! r# P8 ?. g& p$ ]
9 V8 M8 }- q+ M/ I: C' m
8 ?! Z; I/ M: d& M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-6 10:33 , Processed in 0.134403 second(s), 23 queries .

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