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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; w4 q/ v: e! P% z) T7 p
---------------------------------------------------------------------------------------------------3 f3 {# k: _+ ^$ q; V3 E6 x  I
二维码的分类
5 P6 w0 A4 Q! t: F4 o线性堆叠式二维码
  N' R" X) u' N  X
6 U& `% f8 d* g$ t/ m' J矩阵式二维码' h1 t5 U2 u) P( a! H. R

" O7 q& J+ M  }! M二维码的优缺点
& _+ X0 |+ j! w  D6 f0 T# i优点9 |1 `! g, p" A% M# K& k! Y- q' F7 o* j
信息容量大
5 N: v) F; t$ y# N; T" e8 o. j1 O
9 I% t& h4 U7 \# M编码范围广; I% v4 _/ t. u4 K3 ^. h
; N9 l) S9 B/ _; ^8 O  o
容错能力强3 j: j9 P; E' }% A

, y4 @3 G- l: M+ y- |& S8 S% `译码可靠性高
* E1 r) s( ~- m
7 v" D0 q3 D* Z: ?. Q可引入加密措施  Y2 M4 n4 u0 s# i$ Q, w' Q
4 B3 b5 Z; y* s* S  m$ K) y  N
成本低,易制作
) |. |5 k% i: `0 k( Y4 X
& w5 ]8 Z: ]9 s缺点
: y* T% `+ R" n. N二维码技术成为手机病毒、钓鱼网站传播的新渠道
( F  m  {0 {; w( O% a# P! }' k! W
信息泄密
; h7 c1 E* L. B+ C8 f
( f* v5 [( R  _  F目前流行的三大国际标准
) z- V2 T: R& rPDF417:不支持中文
1 c/ j: d7 V0 [4 }. G7 n6 s8 b+ D: w2 z9 \7 b
DM:专利未公开,需支付专利费用! v) P9 J8 F5 S; \1 r
: \/ e3 h- _9 n9 B9 S$ T: D
QR CODE:专利公开,支持中文
. V& E8 N& z* M5 w: g
1 {: }7 I2 }( l+ l+ K9 l8 r3 A5 NQR CODE 纠错能力. m" A( U( L, w
L级:约可纠错7%的数据码字
, q! i# Q2 d* R4 y) K8 D8 d  f* _( [0 T$ E6 n
M级:约可纠错15%的数据码字
) ]+ V) o3 \+ p- N+ V0 B
4 o  V/ E' \  mQ级:约可纠错25%的数据码字
% J# y1 z, T/ E( R# U4 z& s
7 w  b! L9 B2 r. w4 U- D7 IH级:约可纠错30%的数据码字; E5 T  s$ Z$ N- p6 I+ U( T# r
0 c: [' z7 }1 [4 o
前提条件
1 }8 }$ @* ^. v. M5 i4 l3 T! VGD库+ m- `) V! p6 S; s2 e. w- Q
: q% W" W; D, f: ]+ ?2 Z( b
一、PHP生成QR CODE
/ B: C4 L+ X4 U) e5 @2 q官网:http://phpqrcode.sourceforge.net/) B! `2 {5 r2 n* C9 |% L0 r

+ u& y% p6 `7 c6 @9 c8 {' Q下载源码:https://github.com/endroid/qr-code! |% C0 R! l6 I, ^
) T/ a- N; ~. v  r  y2 _* k# H8 |  b
目录结构9 |6 @! J, B1 w$ C( k. Y, R

) {6 y, `- [' f* h6 X' K. F7 K4 @9 d/ K5 t" B! e0 j
1、qrcode_create.php& O4 v- l. i5 W# l+ n
ps:生成普通二维码
: W; R* l* h  L  `5 x+ `9 ~' h
  1. " I! I+ s: P- A) ^  s$ L. a
  2. include_once "./qrcode/phpqrcode.php";/**
      `: A: Q3 k. w+ ^

  3. & _# [0 t% j" W7 O
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    0 Z- d$ l* h3 Q
  5. 7 @4 v  @) J, g, ?
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    1 x1 F; i1 m1 a" d
  7. # ~9 Q& ?* F1 g/ k
  8. */QRcode::png("abc");
    ! Y0 [/ G7 _% [6 D  }2 p4 G
  9. 9 Z. S( A* d7 I8 g" l9 T
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**5 _2 q, g; h/ Q+ b; i
  11. + O! P, J* r  j. _3 B8 l5 K
  12. * 生成文件到本地
    3 _# \4 v, N3 S( i) M

  13. + I1 ^# D3 s" n8 s, d# q7 A4 f8 s
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)/ R( u6 M  }+ N5 J
  15. - a& b$ H& v7 M# g  P! v
  16. * PS:$saveandprint源码的p6参数做了修改
    ( b* W3 W' [- j8 l8 U, \8 R
  17. 2 R- T) }' j4 n4 ?' F6 C1 P6 D# h
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    $ @1 D+ S% p/ m, W6 `2 `% V# z7 d
  19. / K" q- u/ }2 f7 t- A$ u3 L
  20. / u/ u! q: r) c
复制代码
6 C4 u, ?% i3 L3 O+ `" T
2、qrcode_logo.php4 H$ G8 W0 X# n0 W- |
ps:生成带Logo的二维码

  1. 7 ]7 h( u' }' }2 Q! z3 o
  2. /**% J& l& c: |4 f, \

  3. 6 q& s" V8 x2 R* _) x
  4. * Created by PhpStorm.3 B$ {1 s. Y+ H% W, X

  5. ! f" q& o$ c+ u% x$ {+ O
  6. * User: user
    ; v. h$ H& U* W' V+ N5 ~1 {" s

  7. 9 X# `2 ]5 ~" ]; D
  8. * Date: 2018/8/16
    5 e- T. T1 J" p; m* t  e
  9. 0 a/ O% T! P" x4 m& X+ ^
  10. * Time: 10:437 R3 N$ ~0 t  K0 Q& K& X/ @6 D: \
  11. & ]4 r1 A, x% ~* u2 Z/ `
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    ' A0 Q; ?0 l7 O7 ?% `; I
  13. , M+ p% @# {$ n: H! ~
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称% n: L) ?8 p5 u& ]3 C* h/ r
  15. ) g9 F( V4 j- `- A- X
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    3 ?4 ^' [  z( g; ]. A

  17. 9 l# T2 `  {. t' L' Y& H6 h
  18. $margin = 2;//边距% L$ e, X& i  V; H& J/ g

  19. ; ]& F2 t- i0 O9 `4 W; @" N
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片( O* S. n! Z9 g- b" s1 r; s

  21. " @% Z2 M# |) ^: k
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   & H/ S' V2 H4 U% _0 A8 S! h
  23. # A  z# w& V% @' @5 n( x6 o
  24. $QR = $picPathAndName; //已经生成的原始二维码图( l3 C3 X" ~. D) p6 T1 S
  25. 2 H( m( |( z% B' W
  26.     $Logo = './pic/logo.png';   2 U; x4 _2 n  S  l* T

  27. , i: d9 b5 X3 ?$ `2 h
  28.     $Logo_re = './pic/test_logo.png';   ( T  x# t" K$ U! ?
  29. 2 |) s& |  A  V" w. V
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    4 q8 B. l& G+ ]: L1 C3 y

  31. 2 C" R1 u# Q; R/ r& q: E$ n- G% ?. k
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ' o( e% G+ c4 k' K% O. U. H

  33. 4 N( q  p0 b+ H! m
  34.     $QR_width = imagesx($QR); //二维码图片宽度: S/ f, A9 L% F8 ?/ e- q) g2 F

  35. ; Y1 U) v- ?/ K2 x
  36.     $QR_height = imagesy($QR); //二维码图片高度5 s7 ^$ v  ?  [
  37. # S; D! c3 w1 L# f) V( }
  38.     $logo_width = imagesx($Logo); //logo图片宽度) _5 \  t) J4 t7 ~* ?
  39. " ?1 s, u# i: V3 X
  40.     $logo_height = imagesy($Logo); //logo图片高度, o) h% ]  q/ W8 i) Q. Y

  41. 9 s2 Z/ I! H( ]6 X: ]
  42.     $logo_qr_width = $QR_width / 5;   ; V6 @) o6 C! e! v; W- [3 x. q6 r7 d

  43. , B5 x9 s) H! m6 Z+ k
  44.     $scale = $logo_width / $logo_qr_width;   + r9 X" D# h" `5 a4 K8 I" h
  45. & U5 j( V1 J) c. P8 }  K. n
  46.     $logo_qr_height = $logo_height / $scale;   # O0 W' {' ^" [% Y6 w: e/ R
  47. . A' f$ }$ L: @1 e2 ^1 c! `
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;; P7 K9 u% W2 m( O+ @( B
  49. & T4 i1 w' |! D
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   0 v) k! b" [8 E/ ~2 l

  51. 2 X& K& ]2 u4 ^* T3 b7 a
  52.     //输出图片
    3 i% }% n# A# I6 [2 o8 t6 d7 p
  53. 3 x: K# {# h6 z0 r
  54.     imagepng($QR, $Logo_re);
    " i, C% J: Q4 E

  55. 1 l3 G; j. z3 ?( ~& X, {) O
  56. }( T8 C* W' N3 b/ v0 N, f& V
  57. 0 }0 E7 t2 y  d
  58. . z- B& j+ b0 l3 q7 j
复制代码
3、qrcode_vcard.php (生成电子签名): p, X& d( F$ n- S4 C
5 r! |: v# c5 F3 c! @
vCard格式:https://zh.wikipedia.org/wiki/VCard! S! J' @2 h  j. R. V

2 `6 C3 L: U/ i# O

  1. # @$ S& [- u5 t6 \0 |6 q6 ?
  2. * Created by PhpStorm.
    3 s* \9 E3 w! p- ~
  3. . L) @1 d0 i) F
  4. * User: user
    $ S2 e3 \  O$ b! I6 U( S: S) L/ P: @
  5. 3 U2 e6 ]! H* B8 k1 g
  6. * Date: 2018/8/156 G0 m4 {) ]5 Q4 f! [
  7. & U, g- ~2 l; {7 c* E, B$ k
  8. * Time: 23:004 f9 Z* c0 G! Z- X6 o( K! V& O3 x
  9. ' e5 ?% ]) w9 C( K5 _3 e
  10. */require_once "./qrcode/phpqrcode.php";/**) U1 o3 p9 E* T) _3 |7 l5 ~. J- n
  11.   z) h' a- Q1 \( |2 L' j2 K
  12. * 生成电子签名) h+ c: T& s7 K

  13. - r/ N! A0 ^) a" n  g
  14. * PS;使用微信扫描二维码- j* _) S: N* f/ ^$ y% q* D
  15. , W, f4 {) s) g3 f: [/ {" N$ C6 |
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志3 p+ n' m8 d# t; q2 X

  17. 2 e. l* e# ]" L. g2 [
  18. $content .= 'VERSION:2.1' . "\n";//当前版本2 `5 M% `8 p- {$ s5 v! j
  19. $ c7 W3 \, o2 _: E& H! K
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名6 g2 O, I/ {# e: E7 @$ x) r

  21. 4 J( [1 W, k8 [0 y" z
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ' u" M0 f$ g$ n) i
  23. ) ?0 i; b! T% z2 d% J, e$ K% |
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    - N) I4 R& p; B% s" Y8 Q. p- [

  25. # \! v# {4 K6 W& w1 `6 ?
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话, s) D( Z; A; W; p+ K+ ~

  27. 0 m. H' B- A0 d- C# y  A
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    . a7 N/ i- Z! o5 b" A

  29. 7 Z' Z8 k" l$ j$ U
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% z( u8 O9 ^3 @/ k: O/ \
  31. 7 N- L* G/ C' G
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    1 A7 J% g/ U+ @5 [) z
  33. : e% b3 i( \% j0 x# k0 e: T; e* n0 W
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱7 D$ N$ e/ P0 t# J6 R
  35. 2 m6 a* t- U# K8 v
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页4 d. I# U  A+ \2 z4 A/ a. c0 }
  37. - L. X5 M9 x3 K3 N0 x
  38. $content .= 'END:VCARD' . "\n";//结束标志) I% g0 z( S; g/ c

  39. 8 W7 A" |* i- x$ [5 F) ]
  40. QRcode::png($content);8 Q# [9 A) j, f0 r% a* w
  41.   X- b* m% y  a) P' M5 }
  42. & u. |4 F$ U9 J" V
复制代码
  [4 u$ ?+ K5 |8 `, S
相关文章推荐:& y' ?9 k' k+ o5 l: i+ r0 A
1.PHP生成微信二维码实例' H; ?0 U" J. U' V
2.php网址转换生成二维码
. J; a) F& Z/ P0 g: z% _相关视频推荐:
; H# H, t- {: e1.独孤九贱(4)_PHP视频教程
0 }: y% q$ D2 [/ ]' y8 l9 ~二、JQUERY生成QR CODE; q$ v$ e3 E- ^4 ]5 q
源码地址:https://github.com/jeromeetienne/jquery-qrcode
& j# I. }2 w/ O" C! ?$ ?7 v4 c" h, S5 O# [$ @/ l8 ~; W" Y$ U
jquery_create.php
+ L8 g/ o/ T+ U3 E* j' ]: e+ k0 N2 E2 Q+ K0 y) h' p9 ~
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

, J* K, `0 ]& K# u/ S+ A三、PHP识别二维码9 J8 ]  N- ?2 W7 K6 k4 @( p" w
1、方法一( ]! T) F) X) V7 B/ I3 h
环境需求,安装如下扩展
* R; B, v9 B& k" e- ImageMagick
* M, Q0 \: g  F; [, _1 q# _- zbar
, i" @0 U' x9 |% j* H- php-zbarcode
6 t) D1 ?) I* D# _: H* K9 u
5 U! ]- q8 w! X! R5 t2、方法二8 V3 |9 ]6 D3 d3 P% C' G3 G
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% r' v. e* b( K9 M; {& @7 r
qrReader类:https://github.com/baagee/php_QrReader0 s" M+ n! G2 d5 E
9 E8 W- Q- t. ^  ?. ^% I+ g1 v( `

  1. 0 s8 Z7 X9 y6 A: t! H
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    0 l, P# k7 M' }/ z
  3. & T( y7 T! j) C) A5 F/ N
  4. $text = $qrcode->text(); //返回识别后的文本
    8 P+ K$ d+ T# q3 |, X4 y

  5. ( h3 z" d0 D0 n1 O' N  k; r  R  ~( e6 |
  6. echo $text;
    9 A; Z/ t1 r! V3 U& E

  7. # G: W9 T9 |4 p$ U0 V5 O5 |/ q+ j

  8. . e3 _0 f6 _; n
复制代码

8 E. Q+ j8 `# Z& C: q/ K! v: ~链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 k) r2 a; n4 ^, o( E. X- |: {
8 [3 {( X  F. L# ^- s4 O- L- `( X! K: p7 D5 M9 \+ E2 l

2 [" w* R0 j4 l5 e- O' c) B. U# w" E, [+ w2 H% M7 J

+ V# }2 i; q+ [4 Y( s9 t
) p5 h. K9 }, X2 z$ o( A2 ^( l. U9 D8 E3 Y5 o/ W
5 r; [9 d. l' i/ R+ x
1 P# X" E" i' M) B3 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:31 , Processed in 0.054682 second(s), 22 queries .

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