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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, R& k0 B. l- ]6 _7 P+ P---------------------------------------------------------------------------------------------------9 D, Q9 V6 z1 L3 ^  m& k
二维码的分类& r' @: J% ?7 s
线性堆叠式二维码( g5 t: T1 F% Z1 K1 ]4 S: y" D
# z  |% G' T* f/ j; [
矩阵式二维码
7 `: r; D  w  t6 C% i! }) R8 M& ]4 j8 x; c( Z) S% ^- u+ \! C- L. U
二维码的优缺点0 D( g. q& @' a5 b) r  o
优点( E- w9 V4 q8 A* L
信息容量大! V) c) h8 X8 h8 L. s# j8 b$ d
1 [2 A+ Z, a/ H5 T) U+ x
编码范围广
$ R# @" c! B+ Z  Q6 f* O3 v1 y
& K4 b' ?! ^# W+ E2 V" I容错能力强
. i8 w9 W9 ~8 }$ r+ B# A) }6 t: N; A5 i8 S0 G  a, G) l, |7 [3 ?! n  l
译码可靠性高
4 `2 @' \5 o5 b. K( {* }0 l% A0 {1 w" ]) x6 t
可引入加密措施
2 T4 m% k& R2 U
, v& E& y. |! E成本低,易制作
# ?5 s! U: _. n( x, M  A# [9 c( f! k5 T; D9 L- e8 }6 {$ [
缺点5 n/ s8 ]. G4 m2 V/ t0 k$ N
二维码技术成为手机病毒、钓鱼网站传播的新渠道1 }4 x2 D- L9 x- C/ u0 N0 J# D
! _! c. t+ _3 m# s. p9 y( e
信息泄密
  u8 p) M) A7 N/ S% `7 q( t1 p, f4 s3 F! B
目前流行的三大国际标准
; D! Y4 ^/ q9 a) R1 \  |PDF417:不支持中文
3 r4 |6 \  z" `2 r, {2 ~0 [; p
8 _8 F% h5 R' RDM:专利未公开,需支付专利费用
1 D1 [+ M7 z2 R' K2 c5 x, M' T9 o4 C; l
QR CODE:专利公开,支持中文0 Q! s2 }( ~6 n# K
) `; {+ X. g( ]7 i- K
QR CODE 纠错能力# O( k/ @: |* h7 r/ N6 V
L级:约可纠错7%的数据码字
/ M9 {+ ?. [& f4 ]: z* K, t/ q
0 C. @7 m+ Q' @6 ]M级:约可纠错15%的数据码字
0 f3 B1 ~2 Z" j3 k5 i  r( W
% K7 \; V5 l8 cQ级:约可纠错25%的数据码字+ j( W! N$ t+ K' m. ]/ r
" w0 j3 o& }3 F& d$ i+ i+ t) c
H级:约可纠错30%的数据码字4 a8 k/ N' ?( @$ T" o
8 e& D& u8 M6 P5 p$ A9 ]
前提条件
. [. i- k) h# {  Y0 P7 k+ l6 w2 O" \4 z3 ~GD库
; l$ G8 s+ }$ S; O2 Q6 D9 d" X
3 n* X0 I+ D/ n1 X一、PHP生成QR CODE  R, ^: ^1 p  G
官网:http://phpqrcode.sourceforge.net/3 k3 x2 @$ S. ]& C& s
% d4 Z  _) k1 Y9 A* ~
下载源码:https://github.com/endroid/qr-code
9 y' S- R; |" o: H3 {% a; _7 p9 ]; E. E) ~
目录结构, I2 D& m6 d1 T2 M0 f. U

0 f" X: Q; x% R" A: r" v" T2 V- ~$ [
; C( e% c' u" h1、qrcode_create.php
% I. m% |5 v. gps:生成普通二维码  z4 O* `. f2 ]# V7 P
  1. % f2 D- Q# V  c, c4 y% p0 K
  2. include_once "./qrcode/phpqrcode.php";/**
      a7 _$ F9 t6 B7 F
  3. 0 z, K- w) j- ~" q, z
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径5 T! x" Z: E# N; {7 E
  5. 9 @4 L) d% u2 G4 x) S
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    - H+ C! T! p( ~5 j* |# ^% k! ^3 F

  7. , c  C6 \4 n9 P# U
  8. */QRcode::png("abc");' w; E2 U' z4 ~' l7 ]4 i: t7 B- P

  9. 2 J) N1 [* B' N" C5 A% F
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    $ t4 D! i4 M8 d* t1 z, y2 r' q

  11. ' R- o: ?/ b, J/ `
  12. * 生成文件到本地
    " _- S, o' P5 [3 M- V5 c& ^
  13. 2 [- @! k1 j+ [9 p4 x* x1 J
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)) `8 {' h; e" [% q2 Q
  15. % T' n8 M! d5 n7 i5 l
  16. * PS:$saveandprint源码的p6参数做了修改4 g2 i9 K5 h# e7 H/ _; Q
  17. 0 W* F( k; f  B" O. m0 n
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);! J- ]9 J+ B! C9 F# A& @
  19. ( Z5 T9 Q# t9 m# P5 Z" ?

  20. 2 `7 s, Z& c2 O) y& [- b1 ?
复制代码

/ M! b! R9 U& s% @2、qrcode_logo.php) E, f9 I- x3 @  T
ps:生成带Logo的二维码
  1. 6 t, ?6 }- l; A4 b' X0 \# i# s
  2. /**
    1 g8 E5 V5 T/ i# L) Q. M" ~' J
  3. + P0 c$ u" {; m5 P
  4. * Created by PhpStorm.
    + `  |" u! D+ s% T! |7 e

  5. 7 F/ A" s- m! i) i0 H& |
  6. * User: user
    " H9 M  o) C% \0 {: u+ b5 K+ z# l; N

  7. $ r/ p9 A( B0 ^  V. l
  8. * Date: 2018/8/16, P* B* y) ^. ]& H1 [& _( a/ d

  9. 2 w! {: J3 w* x: T' C* O
  10. * Time: 10:43
      M. F/ D! z- R. @
  11.   ]8 j. j8 T& w7 a
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";8 u/ P7 {6 H- @5 U& i7 o
  13. / N/ T+ E+ o' t4 @
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ) @5 R% t( v2 F' I) H' Q% u9 K
  15. 7 c" ^* ?& B9 V) _
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    % g: l& X7 d; J2 a$ m/ Q4 `
  17. , y& u0 C/ N2 s
  18. $margin = 2;//边距
    ) q0 _6 \' T/ a3 `+ N

  19. * o. F* s- Z" P
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片3 W# R2 J# O* B
  21. ' X6 ^+ K: R0 X9 p; ~
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   9 ?/ e7 ]( c3 h9 Y. r, t" W2 Q; Z
  23.   K. ^9 |: T9 q% u
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    + V9 ]8 _! n$ y# j

  25. % J2 V; n" K% d
  26.     $Logo = './pic/logo.png';   2 W$ N( z* ]6 o9 O
  27. ' l+ i* c6 P  O3 p' @+ D
  28.     $Logo_re = './pic/test_logo.png';   
    $ a! C7 |4 [7 o: @+ @; D/ K
  29. / o( b! \: g( Y4 L' q/ }/ }9 f( j
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    8 A+ Q/ ^6 E7 K0 S' F3 e

  31. 5 o4 p& F# j4 ], W
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   2 k0 }7 U7 m- e- `& }, y9 e$ ~
  33. ' ]2 g. a8 k* c6 E
  34.     $QR_width = imagesx($QR); //二维码图片宽度" B+ s( h8 M" r, ?% \2 S
  35. / m" D3 k; f; f* A6 @+ j
  36.     $QR_height = imagesy($QR); //二维码图片高度0 w# b# n2 d8 C2 o
  37. & T- s" ~$ v& l
  38.     $logo_width = imagesx($Logo); //logo图片宽度* P' L1 x5 K* t4 |) w4 u2 T9 G* Y

  39. " W3 a1 W) g% ]$ _6 u+ [% v. w
  40.     $logo_height = imagesy($Logo); //logo图片高度
    / ^* h; b! p$ q
  41. , A+ p; s& P9 t, k" P
  42.     $logo_qr_width = $QR_width / 5;   3 P' y: k# g3 }! A

  43. $ i: @9 s0 e# v1 a( A& ^
  44.     $scale = $logo_width / $logo_qr_width;   7 H% K3 V# v) R! ?9 ]: ]; l
  45. : `0 d3 Y6 k" u
  46.     $logo_qr_height = $logo_height / $scale;   
    . S1 M& z' v. `4 A
  47. & }- u* S, Y' e. v
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;2 X6 g8 K. {) A; z1 O
  49. 0 C( Z- q; ]2 c7 b
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
      I+ p$ Q  f4 F2 z* [+ E
  51. ; c+ q( ?& f4 i$ C
  52.     //输出图片
    2 l1 n. Q7 _- @4 Y% O% S0 P  z

  53. . A3 ^) c6 Q' {* x% E7 L1 r
  54.     imagepng($QR, $Logo_re);: d. N9 ^3 I! X3 d& ~0 @

  55. 1 J, O% Z7 a( a8 X4 x
  56. }! e1 p6 e) G- ~
  57. % U, ?" m+ E: g/ l* ?8 |

  58. 0 Y* G: K6 F1 x/ W, r( y& _( Y
复制代码
3、qrcode_vcard.php (生成电子签名)) z4 N9 E  ^2 D6 s
7 e( J- f* O$ i8 ?" z# [7 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
4 o6 Z& B0 `: P
  U) u- ^0 a& L, @  `
  1. , q6 @& \/ \+ h$ S* z7 z" R
  2. * Created by PhpStorm.
    ( c3 z6 ]5 d& T
  3. 8 Q4 p) ?; F8 ?: R
  4. * User: user
    9 r2 K+ @2 B$ P7 }" G
  5. * }% N7 @7 _5 a2 b
  6. * Date: 2018/8/157 n; ?$ X0 L2 x$ J* X4 }
  7. ; ?) z  R# ]4 }" P
  8. * Time: 23:00
    3 E0 R& P" p4 p9 y4 |1 {

  9. * K. ~9 V# p# S: m
  10. */require_once "./qrcode/phpqrcode.php";/**  C6 h4 c# `3 ~# \/ v, k. I( o+ d5 L; w
  11. % W, m( }5 X  \. d
  12. * 生成电子签名6 w' h0 g0 }' A& \! m6 J

  13. , P( v* ~% ]) h7 @* ~
  14. * PS;使用微信扫描二维码. K. W/ H( @( k2 U; e

  15. 6 ~$ t' m7 x0 a% D1 j4 w
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志, J& ^5 e* u; L& T$ ]4 a
  17. 0 S" M$ S3 B! x" e! k- v
  18. $content .= 'VERSION:2.1' . "\n";//当前版本/ e2 S% F1 g9 |8 z! s/ h% F) K3 i

  19. 3 _. u) y1 s* [% M% r" d: S$ [) f
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 c* t+ \' ^, ^- `# M

  21. / D! Z7 R- D0 U
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    8 M2 j8 Q; Q, Y" J

  23. / w$ I+ |2 C: \% R
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位9 m% o" V8 B) ]! i7 }' D3 I6 ]

  25. 1 h. ~# h. z* c( K7 }
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话4 w1 Y' v( h/ I
  27. : B5 t! E) {7 o8 H8 U  C& h, N4 x
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, S* o9 |& F: d+ E( Q" y, Y

  29. - t3 K& d2 ^  F( L
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ' r, M8 j, E' \
  31. / H& a$ \  h- }" k# n0 O! T! p
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- C* r( `! X6 A/ L3 Z7 }8 E% h; }

  33. 1 ~: n! Z1 {+ O* h6 B
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    " k3 C: n8 ^- P3 ^% R4 ?* W: v

  35. ) R% `  e; e9 `& P2 T
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    3 f* r: H& c% B* m0 J% E# j
  37. 5 J' t0 L1 y9 [  f4 g0 f
  38. $content .= 'END:VCARD' . "\n";//结束标志- V% s9 r, S6 u$ B( P0 n  ~

  39. 2 Z7 x/ V6 e; M. e+ B
  40. QRcode::png($content);( i! ^5 l5 l3 i. K- C

  41. 0 e% _! X7 R0 M$ R  N

  42. 8 d- c: s1 |6 V: j# O
复制代码
& s% O: ~& O3 G
相关文章推荐:1 q1 b9 m2 D& d3 S& a4 s6 o
1.PHP生成微信二维码实例# F& i+ Z, f. y/ @/ B  ]; I: x7 T
2.php网址转换生成二维码8 t6 H) U, u/ T: x0 B  A1 q
相关视频推荐:
  W3 q3 J! R$ |. p0 x/ c, X5 }) r1.独孤九贱(4)_PHP视频教程6 q  `/ R3 G8 _! p
二、JQUERY生成QR CODE+ D6 `# j1 Z% M- x. V% A
源码地址:https://github.com/jeromeetienne/jquery-qrcode' x1 X  }( _( e9 U  v) H

4 s) [& n; Y% @jquery_create.php* i$ k2 ^9 O9 Y4 Q% y% ?
. h( M2 }7 `5 u' d; |( i7 _% `
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
# O# B6 a5 H( r' t- Q8 c, q
三、PHP识别二维码8 Y* {  K6 a/ x; `
1、方法一( V9 x9 Z* p( z
环境需求,安装如下扩展- Q! U+ }* |3 M
- ImageMagick) |6 i$ |$ @$ \0 Y8 j$ C5 d/ s
- zbar
- u' T" F, |- z- V/ f5 T6 x- php-zbarcode
/ O: \6 L5 P/ @5 z' t+ \
+ p" l1 Q  `; K2、方法二6 H  `/ l/ F: _' A! C9 C
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
! A* p+ \/ \! i- S0 r; W- e9 wqrReader类:https://github.com/baagee/php_QrReader$ x5 k) C5 Y  B# M* u0 S
6 x& b) I0 m" [/ R9 O9 M! C

  1. 4 Z" N5 ?4 l  f, n+ W2 f+ s
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径. B  m: h! k3 a9 m; T
  3. 2 W2 U) ]7 T- Y0 W
  4. $text = $qrcode->text(); //返回识别后的文本$ R, ?# U. y6 `' w

  5. . C1 E& y9 ~* H; g1 U
  6. echo $text;
    5 a( V' A) W9 J+ [: J' ]0 f
  7. 5 z! C. d, }$ D7 ]( r2 k

  8. 9 [# b$ v! S% ~# q+ {! {
复制代码

) R8 e& N7 N3 G1 K- X2 e& I链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7% W4 C4 G' ~1 a) Y* d" A: D0 w
0 P# |1 c6 d) @3 y6 Q# Z

* Z+ C6 @* q: w" V" B* Z0 y
& h+ U% O& s) ]% E% ~# ?( Q
+ g) A/ T4 Q; P0 k+ {& c6 E5 A0 c) [0 e
! W4 R/ d1 q$ B  X. {& p6 f9 R
5 u/ ]6 P; ]; s& h. ]/ M9 e. M1 K
! H* b; c* o7 v6 s" d! D9 U; X
1 N9 a7 g- l+ E6 ^9 o. P, u& V8 v, F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-4-25 22:33 , Processed in 0.129310 second(s), 24 queries .

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