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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
% s" o/ _! w; {3 m4 S7 x---------------------------------------------------------------------------------------------------
: X' {5 x( z6 J! S6 m! _二维码的分类
* ]+ l9 \/ o& H$ b5 S线性堆叠式二维码2 T) P$ ?/ i# J2 o; y+ h4 f& d* ^
6 D0 M& x" p/ }8 o4 W  A
矩阵式二维码
1 v0 d* s) B3 f9 g2 R- _1 K# ]0 ~. ~* {2 ~1 {1 Q
二维码的优缺点% P1 l# `+ O) K$ Y. Q/ p2 z1 r
优点
6 f+ K' O% K$ g$ i" K信息容量大- ]8 p+ t8 ]  Z; ?/ M- \

8 P4 O% j7 Z( R  v* ?2 T编码范围广
4 Q, U3 A1 M( l* A/ P# q* y
: ?% I2 ?. \; \5 ?7 F  E容错能力强' S1 u! _& |7 }) Z) V
) Q1 b9 l8 W: ~
译码可靠性高
7 Q8 Z: K  }/ S- E3 m4 ^% o" ?5 p" y% A/ ~
可引入加密措施
) g5 ~8 ~. z0 e1 Q( P# k
+ ?, X: `- v2 E" _, l成本低,易制作
- {- H  \. `% L: d0 q/ t7 X4 Z7 j: Z5 s
缺点
- Y  z4 A/ g$ N9 B二维码技术成为手机病毒、钓鱼网站传播的新渠道& C! x+ }$ u6 ]4 O  O3 y

1 D0 ^- E1 D8 ]9 `, F) ^信息泄密
& o5 ]" m0 S0 e! T+ D" z
* n- y# A! u# Y* o6 x1 g  {" S( ?5 t1 M目前流行的三大国际标准
: p8 I: n: `1 p3 H5 FPDF417:不支持中文1 Q+ F6 ^! T  m
+ P4 N  A. N# J
DM:专利未公开,需支付专利费用7 n; z$ X& ^6 ?! e& L9 w
7 q; s6 F. W* v% x4 `. E
QR CODE:专利公开,支持中文( D* R6 F& k0 `9 C

% y# R$ ]3 n# Q1 T; @+ h* E. dQR CODE 纠错能力( V! F; e6 J6 a. h+ B7 g" Q
L级:约可纠错7%的数据码字
, D/ U% V6 D" B/ t5 b
* y' K# v7 s2 q- |9 I1 C2 iM级:约可纠错15%的数据码字
" ]" v% Q% t* l) q6 m' h& U6 w/ m; R3 Q1 G7 C" M0 ]& U9 b/ l
Q级:约可纠错25%的数据码字
6 p5 }! F; ]/ H- V" V8 ?9 Z7 L+ x0 G: n1 ?
H级:约可纠错30%的数据码字
/ @- Z$ A3 f8 E
: q/ @+ X9 l  S' ~8 b5 N前提条件( a4 K5 q( ]0 g2 ?+ z  @: g5 @: i3 V
GD库) D' k+ M, w& f$ e3 K

/ ^6 [7 j- ^) |% t% N一、PHP生成QR CODE1 L+ C5 p: c/ }) D/ w2 A
官网:http://phpqrcode.sourceforge.net/( l% O2 l* ~0 h2 s% K, O6 u
) p# n/ H7 Z: v& v
下载源码:https://github.com/endroid/qr-code
* @- r7 J$ y9 g6 t  y) K6 o  r  E: `6 K( s  A
目录结构+ B; V+ C5 R2 i6 t  K

: u6 F/ y2 U% c* I) X" B  X0 |$ l% b1 P3 y& ]9 z
1、qrcode_create.php5 F" b& X9 S0 b
ps:生成普通二维码' u: M2 I/ f0 M, R- K) x6 H
  1. & r% U: f( l9 C
  2. include_once "./qrcode/phpqrcode.php";/**; g4 U( g: ]% X) k( D4 F& w
  3. 7 @1 x6 K8 E8 g  p4 A- }; ^, U# J
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径- y. x) k, N3 M( C3 G2 L
  5. ( Z& u; s( U' U* |; y$ A$ I$ r% _1 O
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    6 b3 X( b/ W, B( x/ }* E, f+ ~' `

  7. 0 H# s' M! E9 _0 O- R, o+ A8 M
  8. */QRcode::png("abc");& I9 C# ?' N( F

  9. ! N# ~4 ?- Y7 ?6 [9 w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    , q1 _" t( D/ D0 H6 j: J# o& f
  11. ' T. q, O7 o2 T+ S- _
  12. * 生成文件到本地
    4 @' R: u7 ?, q) P- ]* S

  13. # w2 e; S& c6 a' [+ {- R* a6 ^
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    9 A, T- V% i0 V+ G
  15. ( F' w' N, E0 I
  16. * PS:$saveandprint源码的p6参数做了修改3 @  Z# Y$ w  }4 y; g
  17. 7 y' L/ g0 ?4 Y: e- F1 c
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);+ U" X5 d1 J7 y

  19. - v8 v/ P5 w  z# e- m2 q

  20. 5 V. x6 c5 K8 \5 w( ~- g: O9 m
复制代码
; [3 F- d5 d/ P7 Y' S
2、qrcode_logo.php% `: a, v5 x# o( N2 w1 @
ps:生成带Logo的二维码
  1. ; A$ t6 }% t. @( ~5 a( J. ?4 u
  2. /**
    0 m+ j/ t6 k# |+ M4 x; C
  3. 8 _# n' d+ O* `0 a9 Y
  4. * Created by PhpStorm.
    ; Z$ c# i+ Q9 ^
  5. , E1 `1 J! e5 A, Q
  6. * User: user! H! v% J6 M- k2 N* R

  7. + i) ?3 v/ }! |6 H% D; _! j
  8. * Date: 2018/8/16
    ; [! R5 u( ^* o$ T! {' A" l

  9. ( v! W& \* [2 M( {
  10. * Time: 10:43
    ; W6 p; t, y& D/ q0 x
  11. $ Y5 Y7 h8 @1 f$ A6 w/ B
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";5 s. X0 I1 }* n  y; d$ E/ M

  13. ! P1 i, c" D4 O# I
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称1 r2 S2 u9 e6 g
  15. % q0 d  }/ u) u' j1 e) G! n# r
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    / y. N6 N& }9 D( U
  17. 0 l9 u* W& I: ?
  18. $margin = 2;//边距; i& u! V. Q9 \4 `  O) {
  19. 5 d2 i& T/ s3 c
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    3 q7 q4 m2 H& l( @" m; _% ]

  21. 7 H: o) P& q, h. ]$ h2 n" d; ^" _
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
      m% x; k! L5 N+ |& x1 L% \; M
  23. 5 W" N* X! s, P# j2 ]& M
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    , q* c4 c$ Z; c2 b1 K0 B

  25. . \0 Y/ t& G1 r' d" n" G
  26.     $Logo = './pic/logo.png';     M. W6 ?3 d. m3 h

  27. ; {7 C. X6 Z9 B5 |, ], p
  28.     $Logo_re = './pic/test_logo.png';   
    $ N! s9 M! e# K3 w

  29. $ t* `% v: E$ j6 ~$ k% R8 _
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    , `: p- W0 i. G1 @; U0 I
  31. & `- l9 v0 ?0 U) |& U: A- M2 b
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ! h0 g  s4 l0 i! n- \
  33. 8 o4 ]* d( D# z' v$ [
  34.     $QR_width = imagesx($QR); //二维码图片宽度6 c  K' m! R) `0 v' ^+ f* |

  35. 0 b# O9 f9 [2 {3 {! k6 d, h
  36.     $QR_height = imagesy($QR); //二维码图片高度  P' T; s) t2 m( H

  37. # o( a1 e6 U0 a4 z+ W& J& a
  38.     $logo_width = imagesx($Logo); //logo图片宽度7 I7 B  o- F- K& K9 V

  39. 6 T0 X  L* \$ K# G$ N2 `
  40.     $logo_height = imagesy($Logo); //logo图片高度4 H4 W- Q9 B! k2 E- z
  41. & J: n: B$ ]4 ?6 H) d2 k/ l
  42.     $logo_qr_width = $QR_width / 5;   
    9 I9 x- {  ]+ q8 I

  43. , w2 j' N  {7 W) U! o, W, p
  44.     $scale = $logo_width / $logo_qr_width;   4 N0 z9 a- V3 O8 I# c

  45. 6 ]$ F/ S& r# q' F9 _  Q$ `
  46.     $logo_qr_height = $logo_height / $scale;   
    ! S& O, _) P/ i! |

  47. * \0 I- e  H. e+ N
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;) e2 C0 B3 _0 z8 x4 @& F
  49. $ e: W$ o- ^5 W. c5 ~4 l# [
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ) [6 k$ p+ u" q4 Q  |3 H
  51. 6 {8 t2 B  Z$ z0 j+ |
  52.     //输出图片
    4 s: }, v5 \2 u) l

  53. . z4 L# d  r8 f3 H
  54.     imagepng($QR, $Logo_re);; S0 S6 C- {8 Z$ k

  55. 9 [$ p% s8 T  N4 s6 v9 Z# d
  56. }
    # e7 o) H4 t0 O5 A6 a

  57. ' q# _5 ~, m# o1 a
  58. ) H7 w* |* s3 Z8 R  b7 `' u; l2 C
复制代码
3、qrcode_vcard.php (生成电子签名)
" z, f2 z4 s, l5 V  {0 ^/ u- J0 m# P2 h9 i$ T( j2 [
vCard格式:https://zh.wikipedia.org/wiki/VCard
9 A. }6 H0 e% s2 W# `! ?
5 O* ]/ y- x2 s5 g' N
  1. - H8 u3 V: \! c! v& c! H
  2. * Created by PhpStorm.
    7 ?$ H5 ^  t' z/ }. z" w) H

  3. 9 t: I$ p4 E$ n% ?! y
  4. * User: user
    ) L! U. z: w  y; ]/ c# m, I4 B) Y/ J
  5. ; @; S% r$ Y5 }& p" h
  6. * Date: 2018/8/15+ t" x: ?( Z0 o' z  o7 \# u  T: g

  7. + O, S" N" `7 F9 ~* j# E& e+ a  @
  8. * Time: 23:00" {- |9 m6 C3 F8 k6 A. d* x, u* u& A
  9. # B- \+ X- w5 U+ x7 Q8 Q, P* t( B
  10. */require_once "./qrcode/phpqrcode.php";/**
    * r( M5 r- Y2 p* G) u

  11. * q1 Y/ k1 r$ n$ m4 e  |: Q
  12. * 生成电子签名
    4 j" o( @# Q$ ^5 h; D% S. E

  13. $ ]% ]1 t8 L+ }( Y  G9 G
  14. * PS;使用微信扫描二维码
    3 D+ l" \$ @5 a  j7 _' [
  15. ( `# Y! \& E+ X% p
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    * x6 V% O& _" N2 u0 K' e+ J, w

  17. $ d4 c; U9 G% F9 x; T$ i% R) m
  18. $content .= 'VERSION:2.1' . "\n";//当前版本, O5 L' ^2 _( V! a8 x
  19.   O7 t: B$ t/ d  U9 L8 P
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    3 X  k7 q; f6 i3 `5 g/ S

  21. 6 m1 @* D0 S0 ?2 h
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称2 q, d* l. {+ ]1 \1 v  |5 u# q
  23. ( T9 i& }, R. I+ T
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    0 h( d5 ]6 E6 W' D
  25. 8 h/ c' ^. y* p3 {: t& ~# I
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    # ?  \- l: Q- q7 a( Q  }
  27. - s, Z' K4 f2 D0 H
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! C  x* ]8 A* G! k8 j  ?/ \
  29. 0 O: y: f( W" N3 H. W# Z* W
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)- f/ L) @8 }" N* @& e$ S  z! B
  31. 5 t* v" Y0 x) e9 m. J) e! j
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话& }, D% M2 J2 H0 @+ B0 n
  33. 0 R( V8 s8 W4 t; E- j
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱3 s  M( O: {" H0 o
  35. 5 T: e; f7 t% h) ^2 ]
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页- o8 n/ l  l1 U) O
  37. ; O; r7 v) p9 Y+ i
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ' @5 r& M1 H& ]2 p- [. ?

  39. 3 \" S+ X; e1 R( [$ g2 P0 O! T
  40. QRcode::png($content);5 }( C; A8 Y( g$ U7 Y0 O" r/ T2 p0 v" v

  41. ; p0 M/ g! w0 ]' c# g" M

  42. . @0 p) r, l' {4 P9 j
复制代码

1 Z2 |; Z# Y: [/ L相关文章推荐:
+ s* x: q+ R/ ?  V, Y4 e" i1.PHP生成微信二维码实例  S/ Q* `& }  G1 {* O, e. J$ k
2.php网址转换生成二维码
' Q% {+ a+ [: t# Y+ H9 Z& C# ^3 a% j相关视频推荐:
" k# E" A& f" g# m' R1.独孤九贱(4)_PHP视频教程: i1 \9 G2 i" ~% U4 e( [) G
二、JQUERY生成QR CODE( y& z" y/ S5 w, n# {1 Z
源码地址:https://github.com/jeromeetienne/jquery-qrcode6 u+ m8 s" L" n# p3 a' b
8 w% L* P: \" N5 `) V7 y
jquery_create.php
3 ]% O4 {$ C6 i: a' u# a
5 M: z' C4 G! d
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
4 Y1 g# j1 F: F. s; q7 X
三、PHP识别二维码3 Q/ R! l; V# {; }# p* T8 {
1、方法一' P1 _4 b; a# r  s8 g! X9 r$ D. _
环境需求,安装如下扩展
  A, V0 J! H# m2 `/ L- ImageMagick1 f. b% V. t9 W2 t/ f
- zbar, T9 d7 ]9 ~. Y) z
- php-zbarcode  T' Q6 r. M+ h" R. W
' y- P- R1 {: c
2、方法二6 K; J6 m2 Z# v6 m
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) [' B$ t" j" [( X/ B4 ^- cqrReader类:https://github.com/baagee/php_QrReader1 @1 K1 l+ j1 k# M) [# J8 X
  v; X) T$ U2 h
  1. 7 z" F6 Q7 g4 x" p2 V/ ^
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径: V+ w( s4 {) b# b7 [
  3. ' O- B/ A, z$ X( @/ R0 W
  4. $text = $qrcode->text(); //返回识别后的文本
    2 R- {4 Y2 q% h" i

  5. ) e" Z1 N# E- o, ~% e9 l
  6. echo $text;+ l$ N6 F" h) `( U* a: l$ w4 h; g9 Q

  7. ( o/ [% G8 d( @8 D

  8. 9 g8 w9 \% c  I$ I. I
复制代码

& Z$ K7 E9 F8 p' ?2 O链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7  B  S4 ]: I& @; b9 A

: F/ T8 _# {  P6 m% @
0 ]3 a( Q/ |$ g! K; v& n% G$ D2 @. g  Z$ B
1 _1 L6 o" s- t2 V3 T1 A* A- ^
9 h: N/ Z: A! X' g  g

: u1 G  ~9 `7 N, b0 N* X
$ q, ]& c& ]& M% [, M) v3 a" @6 v. @, |

4 n5 {1 A  e8 @4 G+ x5 _* _/ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:30 , Processed in 0.056947 second(s), 23 queries .

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