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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11100|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
" D2 y1 P: }/ j7 W6 R+ u---------------------------------------------------------------------------------------------------; L7 H: c$ {* r+ `
二维码的分类
# c! L4 J" P/ v; k9 {0 `+ @/ I线性堆叠式二维码
" [" s* O; {  B5 |1 e
/ W/ _% B. I; \8 D& o0 T矩阵式二维码  n1 ?4 U( [" X2 w% Y( u
  V4 m& x9 B+ g3 f% b5 i
二维码的优缺点% Y6 o! w( v% }0 y  r( h1 K
优点0 b( @% P3 ^/ J" h6 X* U
信息容量大8 t' F( J0 i4 q0 B# f1 E/ i3 r
5 O5 w8 b4 D8 C- @( p! h( E
编码范围广
; F" Q3 E# F$ Z& E9 M$ P  ], Z! N" ?. }6 @! H) i
容错能力强0 Q: @' G5 T! \. b6 f
2 S$ k2 d6 w7 t, j. {8 d9 c
译码可靠性高, b# ^+ I: E" n
! a. M& f" V- O9 |6 B
可引入加密措施
! A: E/ N! Q0 }5 X9 c
. @4 x  I2 G- W* y  S4 m7 T5 O成本低,易制作- t# `8 @! j' H# V! o4 P
7 O! ?3 l7 G  M% A. d# X8 o7 h
缺点8 M( E" G1 \+ {# f, [; S( J4 w
二维码技术成为手机病毒、钓鱼网站传播的新渠道
0 Y" M5 f& G$ ?+ d: c% i; i4 f  C5 I+ Z6 ^. C+ f; ?
信息泄密( V" X& ~/ ^" [/ x: Z7 C* e

1 `9 b+ Z1 l8 o. [/ h- {目前流行的三大国际标准
9 O2 I( E+ ^3 VPDF417:不支持中文- ?6 q& ~1 E6 ~& P& V

3 |' e* x( A9 W  S5 CDM:专利未公开,需支付专利费用9 K/ b7 U: u, r/ R5 d- b% u) W$ {# j

9 E+ v* V! u& M- q& I& bQR CODE:专利公开,支持中文! @% N! I$ s9 S8 q; f$ }* n

+ p! d9 E6 w; O% Z; v0 tQR CODE 纠错能力
/ V; m) n' L7 G5 e. n' L% mL级:约可纠错7%的数据码字: h) i- i* H0 p

; o  K! E2 v6 G& ZM级:约可纠错15%的数据码字
$ O. C: Z: F3 x- a; r/ B
. ]0 q; F# D+ c- |8 B( fQ级:约可纠错25%的数据码字
. Z( d8 p- ]- v# c1 B: T! k% C9 @, q+ B
H级:约可纠错30%的数据码字% h& j+ B5 [: O

9 g: q1 |" L7 t$ C) L1 Y7 |前提条件' p6 M+ F  S( ?: w4 n
GD库+ V/ _' O7 r4 o  Q2 k7 N
# y  N; |, n( c& D( b
一、PHP生成QR CODE7 M4 }1 n7 K( M$ Q
官网:http://phpqrcode.sourceforge.net/% u, z+ [" k3 p; {
2 T: v/ z4 v3 }) x: ~1 K' p) E
下载源码:https://github.com/endroid/qr-code9 K# r3 c* y6 y- h0 j% y% F, c
9 Z1 i  X' B9 u& h4 H, C- t3 S  G
目录结构$ C9 y. O1 D! ?# l, H( U- W6 i
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
& G) F1 Z' c. C) E7 F, ^; K" W. R$ a' e1 O4 w: M5 U- s- R+ g/ r
1、qrcode_create.php
8 w& j  }6 ?+ o+ [$ qps:生成普通二维码
( a% h, T5 x, L( h  w$ T3 ]' g' Z

  1. + x; M& j( o1 W, D
  2. include_once "./qrcode/phpqrcode.php";/**
    0 I. f. R: T0 U. k+ @

  3. ! ~* c9 ?- }5 G$ E
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    6 D$ Q# E9 g9 s) T0 _/ {

  5. , K* _# e. r6 A, Q% F$ U7 n
  6. * 在浏览器上直接生成一个二维码(内容为abc)  F# F6 h, g, H3 f; ^
  7. ; R* G3 ?( O/ E( R
  8. */QRcode::png("abc");
    1 X! G5 j' T: L. L; e  [
  9. 0 F; Z" I" Z; {$ {6 w5 }$ w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**! ]% w* m1 c$ w8 U& n: ~+ w

  11.   w$ F2 H: e) Y7 \
  12. * 生成文件到本地6 c# J7 A: t4 `8 Y5 J, Y

  13. ! f) p' h0 C% d' I
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    0 E* }. o# L+ _5 s) o, s
  15. ) r$ V6 v" P8 r: O) F& J  Y5 ?
  16. * PS:$saveandprint源码的p6参数做了修改
    ) R( C! D6 o9 \  b5 o+ {# \

  17. 6 _0 I$ [& `$ U' D5 q) g9 }8 T0 y
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    $ H. N2 e$ q7 i3 M; Q0 I" f

  19. , l2 [7 [) U9 L+ U9 ^$ W

  20. ) t! X& P1 }5 d" Z5 H* F; W! ?
复制代码
& s, C; E: O4 A  |
2、qrcode_logo.php9 R8 j7 ^, H  k. _. Q+ ^8 j" O
ps:生成带Logo的二维码

  1. $ P. S# J. G" ?( J5 U5 k
  2. /**
    3 W  C2 g5 ?5 L: z1 Y

  3. , s  j- k# D' z1 D1 e5 h
  4. * Created by PhpStorm.: l8 v  C% e7 n$ p$ F4 e
  5. 1 X7 b0 s( d9 i8 e
  6. * User: user4 A1 ]+ `2 Z; Z& G7 ^

  7. 1 A7 e+ s* t* A, o
  8. * Date: 2018/8/16; q2 Z  V$ Q/ \/ ]/ B

  9. 9 e/ G4 |# R1 u' |: w
  10. * Time: 10:432 M7 I  L- I' n: |3 c' {. Q4 }
  11. " V' _6 A2 h4 s! Y( k9 m
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    # X5 D# Z0 F& K! P' g
  13. - S# G0 U) c' Y2 a* L
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ' y% {7 d6 r8 X# |

  15. ! E- e( ?" g4 F7 A/ H
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    1 r! [, }! m, k. G

  17. " e$ ^9 a( s5 f- Q  F
  18. $margin = 2;//边距
    ) ]" M  P1 \& @6 Y) {4 u/ Z

  19. : P2 R. h1 f% H
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    # m8 f' E; \5 ^
  21. ' y0 T4 w. M% Q& f" z8 c; Q
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ! E2 j9 t# G# a( M& |

  23. ) H# C9 B2 h6 e
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    9 |) ?! o9 H+ j3 U
  25. & O9 H! ]; l: ]7 E8 R+ C
  26.     $Logo = './pic/logo.png';   
    % g% {4 g* x8 Q- |
  27. / Y' w0 x0 n6 }
  28.     $Logo_re = './pic/test_logo.png';   8 c# z6 ?7 e: |2 _0 f
  29. + J! V9 N) h; q7 j* ?  K
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    + b, y% Q- M  S2 }! [

  31.   _7 H9 n. d4 w- @
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    4 x$ q( z9 q5 \! t
  33. " T8 ~6 U& x  p
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ' w" h! L) ^7 I; ~/ h
  35. 5 w& H/ N5 O  s0 j
  36.     $QR_height = imagesy($QR); //二维码图片高度
    9 k/ c4 D: Q0 s
  37. 8 ?" ~: _0 {0 L2 f2 `$ q" g
  38.     $logo_width = imagesx($Logo); //logo图片宽度- ]/ y+ B) ]# U' V. C
  39.   F0 x+ l' s6 p# m
  40.     $logo_height = imagesy($Logo); //logo图片高度
    ( J$ I# G% x% _8 O% x2 Y9 E
  41. 5 X& N. k8 l) U( d) }3 n1 ?" Z. R
  42.     $logo_qr_width = $QR_width / 5;   
    + Y0 ~  d- e1 x4 i9 R. X
  43. 4 D3 b, G5 k+ r. k2 i) }$ G
  44.     $scale = $logo_width / $logo_qr_width;   ' K* }% b& r% B1 x7 [: `9 f4 m

  45. / |* H2 t/ j9 }$ N  P$ X9 h3 x+ q
  46.     $logo_qr_height = $logo_height / $scale;   
    + U- n; q) V' `2 g& e8 H  s9 X
  47. 9 w9 i# O! J; f  `6 i0 e: C* N+ A& Z
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;9 S( Z2 x1 E4 ~" B& d

  49. 1 r$ L/ i, `" g* a4 W. O+ C( l. t
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    4 y! l( F, ?. \" b! W

  51. ; l% r: K9 `1 O0 }
  52.     //输出图片
    & f. |" @. d* S+ H
  53. 5 }" \, A$ I, x  R% a. U4 N9 M
  54.     imagepng($QR, $Logo_re);
    ; Z% l5 E, q4 X" f% H

  55. ! S- e7 M6 e6 ]5 a3 @
  56. }
    + R/ X) K& I- ^( ?; d
  57. * H- E; R% J5 p. ?8 L& U- m; ]
  58. ) l8 ^7 O5 S/ b' D( F
复制代码
3、qrcode_vcard.php (生成电子签名)& [) ]! M$ u4 `& X+ G3 J" |0 Z* k

7 V3 E3 w2 Q5 H- s# A) c! [8 WvCard格式:https://zh.wikipedia.org/wiki/VCard: K9 w4 R2 ^6 q( ^( t  r4 [. ~& }
2 n" `2 x! {; v- u
  1. 5 K  m$ ?$ K7 W& F9 q  y
  2. * Created by PhpStorm.
    % U& y" P4 s1 ^0 }9 M
  3. 7 N6 y% r7 a7 F! u6 y0 N& l
  4. * User: user! J5 S, j$ O9 N8 X
  5. ' T( W" f1 M3 U3 v; J
  6. * Date: 2018/8/156 @! ~  u5 K8 h$ n3 b0 m

  7. $ e) T/ n  K  H/ s% ?  Y2 Q1 ~
  8. * Time: 23:00. e, A" T% E# u

  9. ( k5 L0 x6 H* h0 _6 _5 t
  10. */require_once "./qrcode/phpqrcode.php";/**
    3 e/ L, K) m* Z1 `& o
  11. ' H; |' ~6 E+ k+ W! H
  12. * 生成电子签名
    * G% _) P" X, Y4 h+ O+ t

  13. 6 q* v5 s! U( i5 f7 M0 v. l
  14. * PS;使用微信扫描二维码: z  r/ ^5 s+ R! a
  15. " N! ?+ ^6 r$ m5 D0 P- u; `- T( H5 N
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    1 t& [/ C, X5 F0 c6 c5 n/ z

  17. . D5 `$ \* w% t' }
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    / Y3 |7 b" \  S  A, L8 B; f. v

  19.   K1 b; D& a/ L- Z7 P2 N+ l
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    & x" r, L; r0 B+ Y* S
  21. ! d- ?( D0 G! U# e* W: c4 J1 H
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    + G: M* F1 }9 |! ?& \

  23. 3 U* k* _" ~- G# C+ \: t& p
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    " ~' z4 C) S( E% X4 N

  25. : L4 G0 B4 `, M& G8 S& w! |! ^& l
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话% ]9 v$ h* _* v$ Y
  27. , F' _0 n+ F6 t' O1 J
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    " \; f& N6 p' T( I, z

  29. ; v+ M; P' x- z# u# p) P$ ~! n# W- U
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    2 h6 V9 l; G" P! W

  31. + X/ L" ~9 ?: Q5 v& K8 n
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话" j0 C. N* X# J7 t. |# ]
  33. / A8 ?0 h, X7 ^+ ]3 E
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱$ Q7 p/ M% M* D0 v' d# r

  35. , y( k- k9 j3 k6 u. L  H" f
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    : x4 H" g! `7 `4 `( z  S( r- v) A
  37. ' d8 d, H, G- Y+ B) d1 G2 d" i
  38. $content .= 'END:VCARD' . "\n";//结束标志
    $ C7 f7 c3 Q8 z

  39. & Z/ y- M; S9 h. t0 ?2 T/ z
  40. QRcode::png($content);( m! O' C' I) I5 a6 W

  41. 1 Q# D6 y4 L# f8 ~; ?/ N6 j  Q

  42. : e( J2 e% F( Q9 @. i6 m7 b
复制代码

5 c- y: B8 m( g4 i2 h4 ]% `相关文章推荐:1 Z/ J! d* O4 o; b* W8 E) {
1.PHP生成微信二维码实例
% Q" ~+ ]( S1 I+ O: O7 R2.php网址转换生成二维码% m7 S. x" R, M) |# d$ W
相关视频推荐:
# i6 ?; _0 Y+ @  L# v1.独孤九贱(4)_PHP视频教程; a, S  R: L. e2 x
二、JQUERY生成QR CODE# H0 S+ w4 J# w+ u& C
源码地址:https://github.com/jeromeetienne/jquery-qrcode
( z* R+ ]1 g( T# ?. E- J2 T
$ @! o  }8 \: R1 ijquery_create.php8 Y% }0 }' M# q7 Y3 K+ o2 m
; a. G4 v) W; Y6 j2 f$ z
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
. ~7 B3 k4 Q. I- P0 u* V
三、PHP识别二维码; D" X3 s4 y; B8 m8 U
1、方法一; v$ e: l# s% P& x
环境需求,安装如下扩展
+ p' }; s$ t2 B0 A$ A- ImageMagick! Z1 H- l; @" T% U8 y
- zbar
3 a: X8 `9 {" I% U# p( z( A$ u- php-zbarcode
" V8 v# s+ v" X! x& }2 ~+ Q' m  Q* P4 e
2、方法二5 A3 Z; L5 H6 E
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
* t3 ^, g1 d9 `2 A9 l, i- ?qrReader类:https://github.com/baagee/php_QrReader1 o; f# P( T* A5 j

; p* Z& I" ]: v1 h

  1. ; Z: ^) H/ _1 p% v! [2 c
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    : f" t" ?. v& |8 `8 E
  3. $ g2 W4 I, \# W, d  M- s, b
  4. $text = $qrcode->text(); //返回识别后的文本" w% F$ ~* L+ }. u3 t7 v. v* r

  5. 4 S: V/ a8 M' s/ i5 _
  6. echo $text;
    7 _7 f4 c$ \- L9 E
  7. 2 p0 l2 [# e# |9 L

  8. 1 X2 M5 q. i8 f/ c
复制代码
7 {. g" t/ R) O
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y70 `3 M8 M; ?- S$ y* H

4 q5 ~( p6 [. N# B9 E
5 _$ ?* O5 P9 W! X
* _, A7 e4 Y; f# R0 v! F5 u( W, }; ~  C, B9 k8 P. J/ @8 w; w
8 @; U% i& M0 w. |! j3 J& G& `
& w2 P4 ^& r, i1 L$ W% k/ u# }
% }/ Y$ X( j3 U

" h) g: A  w' g- Y( Q; p/ X* @) }; [; ~" F* _7 _( M% P6 X
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-15 20:56 , Processed in 0.140584 second(s), 25 queries .

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