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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。( D' e; F5 b6 B6 u' c; b
---------------------------------------------------------------------------------------------------
: ^$ H5 s# G& o, a二维码的分类
4 g- j; F; x) m7 H) J( _线性堆叠式二维码
0 r6 k, ?  U: g5 p( j& T+ c  c( m
矩阵式二维码4 F! y! {% [, m/ m/ U8 }
: y5 b. c: P9 Q  D. F* v5 l2 f
二维码的优缺点* l" x7 A9 u' z5 B0 h% U
优点
8 K, G/ r* A  z) T4 S信息容量大: p, n8 r; v3 x! {2 L1 i
4 _( J; i0 T/ b
编码范围广
9 [% r& `2 ]6 A  _# s5 f% Q  L7 X) c7 X: C
容错能力强
7 }, Z* ?, ?1 l5 H- ]2 ^8 x- o
, u( \) k: c1 z6 K% ~5 M译码可靠性高  s! h8 a) E+ D$ m* N! k

& s8 ~; i& U+ l, A可引入加密措施
0 g* K* D: F2 Q% H  B+ m; C# }  ~( \. V( R
成本低,易制作
3 l2 P1 Q9 g5 i
: e& Z, y( h( e9 n# a+ X0 K' o缺点, S2 i" W! \" M$ V; e7 J
二维码技术成为手机病毒、钓鱼网站传播的新渠道
( Z  M9 p* W' [, c4 Q9 i2 t& p: \* x# G5 Q8 v
信息泄密( ?/ B7 T) v% s" D0 }
' S' w  e. f( y9 p/ W3 \7 f
目前流行的三大国际标准
+ W* i" ]3 O, o$ jPDF417:不支持中文9 e- v, X- k7 ?' d$ F) B/ f$ o

9 F! G7 Q" \" _8 e# o( |3 yDM:专利未公开,需支付专利费用
9 a1 V( i% F/ l$ }, ]0 G8 p; C0 k5 f3 \: H8 q1 e
QR CODE:专利公开,支持中文, u! V& I! t/ l0 R9 C
7 p* G& G# ^! a+ A
QR CODE 纠错能力8 e- c% N) Q8 {' o" x2 a
L级:约可纠错7%的数据码字& w6 b- i+ A1 |4 O; G0 q
3 c0 r6 S. L2 ~& S# l8 V1 x* s- O
M级:约可纠错15%的数据码字$ u) a5 I3 m/ F, g  Y: n
/ T" }1 m% ^5 L
Q级:约可纠错25%的数据码字( x( a7 o1 l+ y8 y6 f! m

% ]* w" L1 D; ]5 \; J' ]' }H级:约可纠错30%的数据码字
1 D% f% H+ g! A
- i5 N% ~* d/ j, A0 V. G$ n  P前提条件
1 G- R# R- U( ]9 }/ S# AGD库
( D7 I6 Y! z/ e8 m1 Y4 A3 x3 @% c2 T3 l' g; Z8 I4 n
一、PHP生成QR CODE6 P; I, D6 B2 r5 M4 G4 l
官网:http://phpqrcode.sourceforge.net/
5 J; N6 {% |& z% k; c
6 f" _$ ~. W! R% G下载源码:https://github.com/endroid/qr-code
+ Y& ~8 v) g$ a5 T8 \5 @7 \4 h, l' m5 D& h7 _7 J9 W
目录结构, @6 n! q' K! g$ a5 H

! W* Q. H+ _  q) H8 P# l& R# k: E( C, j/ O
1、qrcode_create.php$ Y6 p* T, v; ?) t) x
ps:生成普通二维码
  u6 D# S) N9 p- b$ {1 Z
  1. 0 Q1 x) Q* l! k; q  Y
  2. include_once "./qrcode/phpqrcode.php";/**1 s7 M1 D7 n( n: `
  3. : ?' n& {$ H/ N( j& u
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    & [; c4 g7 X+ i6 E  m7 k2 y
  5. 8 H: f6 K$ \" v2 w
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    * k1 k: c. J# {% P# v# K5 P% ~

  7.   A( l. n( D7 d
  8. */QRcode::png("abc");
    0 Y# F& N/ b2 o" j$ |

  9. ; P  S0 u2 S# L
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    % c0 F" |8 {" G! ^
  11. . T0 p' k& @( v; }! O
  12. * 生成文件到本地
    . ]3 I; @- D. f# Z/ j/ i; v

  13. * r+ _( L  L- t8 d' e1 E
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)6 J3 S) q% w& b  Z3 D/ t' ]& a: i
  15. 6 Y! G0 X6 s/ v4 r. o
  16. * PS:$saveandprint源码的p6参数做了修改
    0 l+ b: k; b4 C1 V  b8 m* s& F9 Y, q. U

  17. 3 p( S9 w4 b) {  ]# H0 x3 R
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ o/ w. T# S/ m, O5 j

  19. # s( }) E3 d$ [( J! j( R5 o" X, ?% k
  20. 2 u. A3 b4 T4 M# g1 N
复制代码
1 N6 F6 k' a) \8 u& l* }1 R5 m
2、qrcode_logo.php
2 g6 x, ^% J/ X" |ps:生成带Logo的二维码
  1. 5 |, F0 O9 E+ D" a- o. c  u9 G
  2. /**& a6 x! J- o- `) i
  3. " w' J, y4 r, a2 n& b7 C
  4. * Created by PhpStorm.
    % ?6 ^2 M9 c! }4 @! z: @7 V( ?
  5.   q# H5 n+ _7 v3 h: S/ k7 W
  6. * User: user
    * T8 l- G, v' L# x0 K. N! q

  7. * m1 l( u2 r: x1 U1 ]4 d
  8. * Date: 2018/8/16
    6 {* h2 a' K: K7 v
  9. ' }4 U& q3 \  `: J; ~5 b/ l6 j
  10. * Time: 10:43
    ; x6 S. G: p8 @7 z
  11. 5 `' _$ ]1 Q0 }+ Y1 ~$ w1 B. |7 T
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
      B1 y6 \: s+ z( U5 [
  13. 6 j2 s: [3 Z. ?' H8 e; F' A
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称2 I' _8 a$ W" Y

  15. " s7 t& x* D( Z
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    7 D% G4 A3 q$ H1 ~. O6 A9 _; m6 k
  17. * P% v6 _7 B* u/ [$ d: ^2 {& R9 Z  B
  18. $margin = 2;//边距
    / l  r7 V# n2 @

  19. / W4 K1 \3 P$ {2 ?" Q4 t
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片9 m; W; h# |5 B  h3 c

  21. $ s2 ^8 ?* @% F* H" ?! R( ?2 F
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    $ ?! E: R% x. F& q
  23. - v! ^! J0 R. R2 J! y$ W4 `% f+ ?$ e
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    4 x7 s- d6 ?7 \: I& s& T% T" ?4 r
  25. 9 b' ]9 H! I! o) f8 }* j9 |. U4 [
  26.     $Logo = './pic/logo.png';   1 w2 N- o' h4 V/ R& v

  27. * l$ `0 b( ]+ \* ?. l
  28.     $Logo_re = './pic/test_logo.png';   4 y; H. |2 L9 j) m

  29. 3 b2 G: u$ p- Y, E, a! `0 f, @( `  T5 C
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   2 i7 ^' ~. C+ @( `' ?4 I

  31. 4 ^. M% P( y: b  Z+ s; t
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    " q9 ]2 D3 D8 ^2 T" L
  33. 2 H+ c% c3 W! s% [6 C0 A% E
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    2 y/ r5 e) P# F$ J

  35. $ m, Z* D% r, q: {4 x% C+ L- Z8 V& Z
  36.     $QR_height = imagesy($QR); //二维码图片高度6 E5 s9 ?% I$ _  m* ]$ X
  37. 4 Q% ^; H: ^: }6 p
  38.     $logo_width = imagesx($Logo); //logo图片宽度" T0 e" ?+ Y4 ^$ M/ R" }6 C& G' c

  39. ' l7 g5 o, w( p8 W
  40.     $logo_height = imagesy($Logo); //logo图片高度
    8 ~  B" Z0 J5 H4 o) F. k

  41. + G3 L7 A: I" R$ _8 n4 p) a
  42.     $logo_qr_width = $QR_width / 5;   
    : @' \/ u) h9 ]/ g( }( ^* W& U9 W

  43. # S! }" k7 m. S0 ?
  44.     $scale = $logo_width / $logo_qr_width;   
    - D. _7 @% @* t  l3 ?/ S. |6 k
  45. . q. h$ U# k3 @# n8 x
  46.     $logo_qr_height = $logo_height / $scale;   ! @' x6 A1 p5 Z) H: L
  47. ) T( F4 Q! T% r  F% s+ r
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    * [# r, z6 K6 g$ _

  49. 2 z& M+ K* H6 D: o+ z
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   8 W: T5 D. }; N

  51. 0 x+ Z7 @) k6 h
  52.     //输出图片
    ! F: \1 y! a8 Z

  53. 3 k- n' ?) Z+ \" Q3 ~& w
  54.     imagepng($QR, $Logo_re);
    5 `  Z+ F1 H5 b

  55. 7 f5 j; ^" p5 O; |4 c! x$ l
  56. }* x. c, B' U* ?/ P( E

  57. / U7 D: ^' V7 J  f4 M
  58. # d2 z3 K! x& O4 @, [: i1 J4 Z( T
复制代码
3、qrcode_vcard.php (生成电子签名)
0 ?1 m0 V1 j/ U7 {' f% l
' D% |/ ^% J3 ]- IvCard格式:https://zh.wikipedia.org/wiki/VCard
5 l: W6 r. i$ T5 W; ]4 r0 X7 w" O( w5 E- K0 k# l0 E1 |+ g
  1. 8 m) v9 G" ^8 q1 O7 S
  2. * Created by PhpStorm./ D- T# O' C" Y* O
  3. . T! r% A$ a% e2 K# F
  4. * User: user/ S' |* X' f; R2 Y

  5.   U& S. Q% E* V" d% A- @
  6. * Date: 2018/8/15
    : |4 x: [! W5 x1 }

  7. 5 b$ \* c; d" c6 M
  8. * Time: 23:00
    ; V; H# s4 ?6 a8 ?' E: M, l# n1 P
  9. 0 F5 L+ U: c  M5 w
  10. */require_once "./qrcode/phpqrcode.php";/**
    ' W. W, k# m, Z$ c4 w5 }

  11. # h+ k5 B5 O2 M6 K/ Q
  12. * 生成电子签名
    ( v5 E9 W0 a& y3 z7 N  `+ b

  13. $ D, l4 ]+ E3 A  V- S7 E
  14. * PS;使用微信扫描二维码/ f3 |% R: h# E/ \. t, o1 Q  q1 G; N

  15. 0 }, H' S: v, ?
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志& r5 D9 Z# L9 T$ ^

  17. + @, R: M6 R, W7 T+ p: T
  18. $content .= 'VERSION:2.1' . "\n";//当前版本& {( @$ \) F9 Q

  19. ( l  p& f" {% i2 f5 g1 `& [
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名9 u& L6 `: m5 {4 \5 ?
  21. $ J+ o; d0 O  @5 h8 d: ]; G
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    1 O) I& l1 d5 U

  23. # Q) I: z7 G0 H* S& T
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ) i' t/ ]' ]" r( v- j% i
  25. 2 n3 G. I8 K  S# w
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    $ o! q0 z2 O. j) {1 e
  27. * _, X% `0 e0 ?4 ?, p" j9 V
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    - A. y4 y) I' j* W: P5 P' h) d

  29. 5 d8 G& q, Q3 c- ?. Y
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    3 Y4 z5 t* O' j7 f) X" W5 ^5 C' Y. t

  31. 7 v  Q( a- S2 J( `8 |+ K! X1 y
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话! t" r; L, l) w+ Y( G

  33. ! O, _  Q8 m6 b& K
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    & ^+ ^& w" T% d

  35. $ x6 i( J& x" L3 m% S+ [6 F/ _
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
      j" S8 e1 {9 R+ l6 f# o: Y9 V

  37. : s; W  d. Y: o- n( F7 o5 k  H& t* |
  38. $content .= 'END:VCARD' . "\n";//结束标志
    3 Q1 \+ q. C4 r( M, A% R6 l

  39. : @1 L2 L! u3 V' C  u) U
  40. QRcode::png($content);0 Y4 c3 h) X9 z5 J

  41. " p  c/ w8 D" A6 y$ T* d: R

  42. 5 t' x' T5 f2 {* o
复制代码
! |3 [- }2 J' X) K1 ^- s+ Z4 s! y8 w
相关文章推荐:% v% _# g0 B  {; E
1.PHP生成微信二维码实例: Q( S9 L% w: f. K
2.php网址转换生成二维码
9 i: w: q" Z( ]相关视频推荐:
6 {7 D: }( X$ W- s' \0 }+ b1.独孤九贱(4)_PHP视频教程# D  z8 M2 N9 M3 _3 C0 ^- U
二、JQUERY生成QR CODE7 E7 h5 J2 Q# O$ [
源码地址:https://github.com/jeromeetienne/jquery-qrcode
( c' t2 u& V* N7 n4 R
; R9 g4 n' L$ K& p0 W. O6 w" L: Ijquery_create.php
" d5 {% Q4 ]& I! T; [- k' ^- q% N9 Z% |( O, X& V3 R3 H
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
" R" E1 }# Q" a) z8 Y" m
三、PHP识别二维码
+ u* r  m7 q; ~6 }1、方法一' t2 Y# v1 d- {0 M* U
环境需求,安装如下扩展" i' f+ z8 ~5 A+ Y; V
- ImageMagick
, {& Q; G! u) r4 N- zbar
- X3 F; n8 E& ~+ E- php-zbarcode
! S) M) P" E# m( Y) B$ s. v2 _: G) O! z- i8 v% B
2、方法二6 u9 B+ e: T1 n! l8 |
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
5 _* |3 M' Z2 T( L- G6 m+ wqrReader类:https://github.com/baagee/php_QrReader7 v) i& r: h# L7 F, [  a3 W* M- O
# o$ |! A0 z6 w7 k9 \

  1. ; {6 k2 N& i8 w* P6 }
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径* b8 W/ c' ?3 J- ]

  3. , \5 U/ a* k9 F
  4. $text = $qrcode->text(); //返回识别后的文本8 z. ~3 f6 F; V6 a; j

  5. ) V; h6 ?$ F: j6 m  k/ P& E
  6. echo $text;5 f! ]( X0 {1 X) ~. ]' p
  7. # b" k$ G. o' E/ z+ ^+ d

  8. , H$ Y( c/ K* Z1 a( Q2 P7 R" }
复制代码
. G- @7 w! X& b/ Q  Q2 A
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y79 u& E$ x/ Q2 `. ]! [) l3 M

" D! P2 j5 ?  y% l, H" F2 v' `& _8 e! _9 `' g& Y) |9 A

) ?% ~$ J& b6 j- N$ F" H. M: r+ W6 R9 S% z

; W+ [8 l, z, D7 U, [. i* G" Q, K
* d7 @9 G- ^! W# P
9 N7 h/ d# C; P2 y4 H
' T. T6 c* g& b: N3 o% ^; S( q" o; E4 E6 d7 I' a4 K, o( r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:21 , Processed in 0.055356 second(s), 22 queries .

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