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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
0 ~0 `/ h$ ?. z2 c* ^5 P5 ^& B2 q---------------------------------------------------------------------------------------------------
, p( D9 q3 j! G, M* U二维码的分类% a0 S  k; O! [% E
线性堆叠式二维码
" Y5 w* o$ ?) g0 U2 `0 |( T3 X# t/ X  o# U' ?& d; d
矩阵式二维码2 j- n1 l  p* y4 y
. ^# V( T" S' C& I
二维码的优缺点
4 Y, `( l; o& D9 b8 C优点4 H8 [1 ]9 U& i! l, e* `- \
信息容量大: G0 V; }/ Q. g' U9 d
7 k+ g6 g% H( L7 L
编码范围广- Q3 z( U5 a% V$ j

5 p5 j  T0 K* }7 `, b# D. M# n容错能力强
% E$ U$ j1 b% {. p3 K  s& I) ?) [# E; u
译码可靠性高
) [( q* p$ R" u7 ]
2 V4 q% ^  b* m$ {可引入加密措施  ]7 Z) t1 _' q! P- D  k
+ \; @6 X2 ~+ S) j8 f: r
成本低,易制作& A7 r5 [& Y# \( R

4 d$ `/ _+ w, E( _# ^缺点9 Z3 z$ J( X0 Z
二维码技术成为手机病毒、钓鱼网站传播的新渠道
9 R% u' a; y: b8 J7 a4 A4 {/ }# C' T5 f
信息泄密- b6 R5 X  D' {/ {6 V0 @3 x
. r, _8 B# q. P+ `" p* e4 Y9 f* h
目前流行的三大国际标准6 }- [1 [! U0 n" z
PDF417:不支持中文9 B+ v% \% v2 U
. u3 w  l3 r0 P; ^! Z
DM:专利未公开,需支付专利费用
3 s9 y: x4 U) Q- @- G+ \. f
0 {9 ], b5 O# aQR CODE:专利公开,支持中文, a& b. t6 c. L. g+ A- L* ^

% _' L( }- t! I) X7 hQR CODE 纠错能力1 p% u0 @- G! b6 e2 J
L级:约可纠错7%的数据码字
& S9 p6 I$ K- Z4 L! U4 j8 R& _6 W+ O" J
M级:约可纠错15%的数据码字! Q+ S# b; ~: L9 }3 [+ n4 r. @

  E' q; O/ b2 ?. X0 @' B" VQ级:约可纠错25%的数据码字2 \1 Y& C$ C5 n% ?/ B
9 x( F" T0 \2 t' G2 p( ]! |" _
H级:约可纠错30%的数据码字
" k( v1 W2 d6 ]
1 W* Q9 C% D: [6 l9 }前提条件
% \7 v( ~/ k( I) W# IGD库
. A: z2 ]/ F: D3 B& j1 N% j% f; _8 Y3 v9 V/ f8 Z: N
一、PHP生成QR CODE% s8 a* W4 @3 x9 l5 H3 p! M6 J5 D
官网:http://phpqrcode.sourceforge.net/7 i5 e* N. w2 I: w6 C8 Q

: M9 m9 y4 U; v4 t7 v4 {下载源码:https://github.com/endroid/qr-code' @$ s3 p& b, l# U$ P  j+ h; D+ V. z7 v
  y3 e- ^- W9 G9 N9 F# |/ m
目录结构
( W) [! U% j. I5 p; v
  [$ k6 g& A6 y% F& j! B+ K3 L& ^2 S
1、qrcode_create.php1 I$ X. o1 }1 E
ps:生成普通二维码6 q: P4 U/ U! a5 h! I, c8 H
  1. / z3 W: m3 W6 i# D4 a
  2. include_once "./qrcode/phpqrcode.php";/**
    ( |, a, k$ u2 R5 ]5 e

  3. " R8 q% Z6 V4 b, q; i2 ~
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
      P$ i. O$ F4 @) z+ O, j3 O/ X

  5. 6 o$ ~2 a3 p) g7 K" a9 M6 v
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ! E3 G" A8 f7 P  d3 u* T, M* i
  7. ( I  L' b9 [( `& D, g3 ?
  8. */QRcode::png("abc");6 V, O- L: S2 H; e) c- ]
  9. + O. z+ E. b& x5 w+ q
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    " u/ Q; D$ G( F- K2 H0 j' r- D! _
  11. . E  \& ^( W( A. t
  12. * 生成文件到本地
    : c& ^8 V% G; _- j# j4 S# O
  13. 9 `  I9 Y/ Q4 k* p# k  i
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)* l, }; D' v, \" \( `% {! V
  15. 8 L- K9 e# E2 Y7 b/ c  o8 ^
  16. * PS:$saveandprint源码的p6参数做了修改
      I; u, ]0 E, j

  17. + [; Y# N) B) M) ]5 r
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    / A) ?  S! b+ b' s4 J  s0 s$ s' g

  19. 3 j2 s* _6 Q+ V8 G; x
  20. 1 @9 h; @5 a" H" M& ?! y+ u
复制代码
8 P& Y8 a, [( y
2、qrcode_logo.php
# [  L- y* t9 @  h, lps:生成带Logo的二维码
  1. : Z) Z/ G/ e, P. G% u* J7 v/ s
  2. /**' l. e4 h3 h( v" T4 ]+ o
  3. ! ^  C( R! V& p, @) G
  4. * Created by PhpStorm.
    ' r1 D7 Z0 @- K9 S5 j
  5. 6 J; s6 M) c% l1 z" a  U
  6. * User: user
    . d* ^  C8 q2 t5 b

  7. 7 d& h/ ~' D: l" T4 v1 f
  8. * Date: 2018/8/16
    " i( b6 u! h$ B- |. f/ v, K

  9. # ~7 A$ ?' N9 q* Z  I8 s" r
  10. * Time: 10:435 K) X/ K4 n9 G* p4 _! \
  11. $ K! D2 ~2 l5 @! K' P0 p$ Y) q
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";& `2 k3 P" S$ K6 @* I

  13. 3 @0 y1 R2 X7 P' u, R
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    4 u: Q' Z3 J1 ]$ `  J1 g4 S

  15. ! q: v/ f6 V" N, ?0 O
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ) l, M& c+ x" l# u
  17. " b0 B  T' f) i
  18. $margin = 2;//边距
    / ]7 V7 q5 q  Q: a, H" `
  19. ; r* g) e' K: Z( S0 z5 @4 `
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    4 y5 C& _9 V: q- _3 ~6 F

  21. 4 `+ D$ y- T0 k2 j* t9 b
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    2 X  D; K6 Y( K& D, a) j

  23. + ~/ R2 y9 {7 K. n4 |
  24. $QR = $picPathAndName; //已经生成的原始二维码图' I! F- A, n9 S" _4 r

  25. : f' \7 m3 R- Q* [- r
  26.     $Logo = './pic/logo.png';   9 d3 q; C2 H, m1 V

  27. ! z, `7 j) F. f; Y3 ~! _
  28.     $Logo_re = './pic/test_logo.png';   
    1 I% \7 d# N1 x- k4 C

  29. % g. O9 ^1 k" J8 _- i* G( T
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   4 w% |% }' J, M% m6 s! {3 M( d- c
  31. % Q% p( m, y1 u* g
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    + w1 b: O; ]  l6 M
  33. ; s. c! _! N" W8 P% `$ C
  34.     $QR_width = imagesx($QR); //二维码图片宽度: p1 W, |, ?# O; _7 l

  35. . ^/ D* s/ Y  a  G9 _8 Y- N6 |
  36.     $QR_height = imagesy($QR); //二维码图片高度2 D& Y  Y8 ]3 H( A
  37. # k/ |* K5 \! i8 r  L
  38.     $logo_width = imagesx($Logo); //logo图片宽度8 L3 |, {- W: D6 t0 D: z

  39. 3 n3 i6 u2 {3 U) G9 v, }+ o5 B
  40.     $logo_height = imagesy($Logo); //logo图片高度
    4 p, }% }; ^! H% [
  41. 8 f5 `" M/ U- F* i, W
  42.     $logo_qr_width = $QR_width / 5;   
    7 K! m) K# A6 p$ N: n/ e2 |$ W  E
  43. 8 w; _; ]2 E" H2 X
  44.     $scale = $logo_width / $logo_qr_width;   
    # W4 l& J2 w- \
  45. ; t9 h( ~5 j0 ]' T* }7 w% I
  46.     $logo_qr_height = $logo_height / $scale;   
    5 C7 S6 M7 l$ L( H& e

  47. . t9 P. ]8 l% |  ]- q8 \, ~
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    / z' y5 h; ?9 [4 I" L% b

  49. . l) e& d1 |0 q/ P! U$ z
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   , m2 U8 c- M) u" x& d2 A, V
  51. * |' b7 g, O" J" q  s# ^
  52.     //输出图片( p% G- y7 X& ~+ z3 d4 e. b

  53. 4 b: F8 `- C% G8 [0 x8 S
  54.     imagepng($QR, $Logo_re);8 }0 t2 r- y( m" }- a0 r

  55. ) F$ @6 f( S# w9 Z. f
  56. }; _. m$ g. Y+ S

  57. + W9 |  l& r; W4 i' w8 [

  58. ) b6 n4 n" v$ Q2 b5 W. n' G: @
复制代码
3、qrcode_vcard.php (生成电子签名)
7 f' a0 }/ m) \! t7 h2 h- g- D7 c3 G: e2 l6 }* H# N
vCard格式:https://zh.wikipedia.org/wiki/VCard
) I, O: `4 C% K
( ~$ X( t* X+ h; y1 U; s
  1. " {. z4 F$ U6 i" r4 I* ~* H
  2. * Created by PhpStorm.2 o' n  G- F9 A+ a/ L% w

  3. 1 S: \. U. b/ ^# b* Z
  4. * User: user! Q% S0 J$ K0 H

  5. / F6 s3 e" w. f
  6. * Date: 2018/8/15
    # h) i1 f' Q/ v3 q: p
  7. 0 A6 l, x7 ^5 N
  8. * Time: 23:006 K3 V! `4 s# G7 d6 O

  9. " J5 h- z2 [. w$ |, T
  10. */require_once "./qrcode/phpqrcode.php";/**) b- G4 Z; x7 Z- `$ s2 J
  11. 5 j% @# [, g  O+ M; v, a
  12. * 生成电子签名
    ( ]& e' T: y) W; t7 \' |  K; C: W
  13. ' I( T! C& m; y! B
  14. * PS;使用微信扫描二维码
    , n0 H& N; ^3 [! e

  15. 8 x' Y$ B( o1 j0 _7 j( f
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志1 Q6 H  S- M3 Z9 S7 v

  17. ( E5 `% U3 e% n- |8 F3 X7 |
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    % x0 R8 L: _- t3 Q3 t* w+ a( I  s/ O

  19. 7 ^) d, `+ I. ^+ b' H4 Z
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名' [* ^* ^; @. L* U$ x
  21. & |4 D% O  }! ~; I5 h
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    3 j" H9 i. Y4 F- e/ @* T8 Y. j
  23. , ^" E! Q' g- @3 V
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    5 y& [2 X0 t$ q0 ?

  25. + j$ x* f9 K" D: `
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话& T( B" ~& A" R. W, i: L

  27. . @+ l& m( j+ b: t$ F
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    ! Q5 o! S2 t9 f1 I1 e: y

  29. * x' H5 j1 k; b* j! I
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)0 w( ^! O8 G/ |/ `
  31. 3 D  q' e/ c3 \+ I, c
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    8 d' c0 d6 t; v

  33. ( ^. ~2 d. ]# {
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    $ M# L$ j/ |/ n. {/ G: w  A4 ^: _

  35. 9 b1 W- A) a' h5 ~- _4 Y
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页4 K: m+ T4 ~4 m1 d) c
  37. & J( |, z; O# l8 f0 W
  38. $content .= 'END:VCARD' . "\n";//结束标志  A3 ]( G  S) c! ?- T- \
  39. * p3 l+ o) {6 V2 J7 Z! t* h2 E
  40. QRcode::png($content);
    8 f% o: K* i' W( C% B* `" {4 B
  41. ( |) h% U2 \" H! F6 B
  42. ' S# [) ~% g$ H4 C3 m" p. w
复制代码

, ?7 v' h# D' z1 D相关文章推荐:4 k* k# \/ a0 R. O/ o4 j5 N$ {
1.PHP生成微信二维码实例9 v/ @4 T0 a+ |. m( ~  S# A
2.php网址转换生成二维码
; z: s- r0 |0 e$ \) |相关视频推荐:
" N; a/ R9 L+ c% Y  @+ e5 z1.独孤九贱(4)_PHP视频教程4 j. S# w2 g5 R  n: X) U
二、JQUERY生成QR CODE
2 w- g0 K5 h" `2 G源码地址:https://github.com/jeromeetienne/jquery-qrcode
" n5 c# K" H' J& \
# x) j- r, H1 Pjquery_create.php0 I& `& a! |2 L3 i3 ?; ~# e  Q

( Z: }% T  l/ p9 P9 w
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

! N4 v% a8 x. r/ I' V6 u1 F1 M三、PHP识别二维码1 [* R0 o" l2 i4 p; [4 Z5 |2 G" q
1、方法一# Z( b  ^8 `6 Q& Q- k& U
环境需求,安装如下扩展
1 `- r4 }" v2 v# [4 |- ImageMagick; X+ @/ T! N' G0 {* V# Z- g7 Z, |3 a
- zbar4 `7 h, b- n1 ?5 D) u
- php-zbarcode  o. n% Q2 P7 }% K; O! W" Y; b, s1 e9 i
) R+ o# @, n  U7 k/ O
2、方法二
! ]4 ~" d; m3 U( o" C; C  n/ ePHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以# s+ E4 f$ x5 }' w& g1 D4 P" R
qrReader类:https://github.com/baagee/php_QrReader. R5 v' z8 b; p; R

* P6 {3 ]6 m3 M7 b

  1. 4 G# A' @! y' O9 R( M5 ~
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径- p. E- `- u' I' |
  3. ! [" H9 B* J3 @! I5 r1 r
  4. $text = $qrcode->text(); //返回识别后的文本
    + q+ k! O/ h# |

  5. 9 M. J; G! {1 F8 \0 `$ Z% \
  6. echo $text;4 w- M! m! ^# O4 T+ E: B
  7. / W/ ?- w% A9 R) X% J* d

  8. ' H7 I2 I" A$ t+ b( S0 B& u1 m# f1 }
复制代码

1 ~9 `; U- r' U% b% j$ f1 y( A链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7" }) S7 O  U5 O) V* Z

. p' h* z7 |& [) c
5 i. w0 t  X: q9 j; {% {4 ~: s) v  z# A/ f

. T2 j( Q4 V2 a
! ~  V( D% m/ z3 _2 f0 _/ s5 P+ C3 p5 I+ Y( C/ f

0 h+ Z  H* u3 d3 u$ H  W
, z' O0 N# r. ?  C+ O: ~
- f" i9 x" m. N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 16:44 , Processed in 0.081167 second(s), 22 queries .

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