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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 32| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。. }7 |( t. N; {  e% b$ P3 {
---------------------------------------------------------------------------------------------------7 ]% ]/ \2 v  Z
二维码的分类, S9 s. N# j2 ]
线性堆叠式二维码, y. C0 P8 R. Y3 M! W
% q) S* W- V, U: i) Y
矩阵式二维码
/ L. l+ z, h& U# |. `- ?" _: h- f4 V  h* v
二维码的优缺点
6 M/ P, _/ r& X' i& V3 H' ]: ]优点
4 N' `6 o& |( O  p' p8 \/ W+ c信息容量大$ _9 R% D# x- S. _9 F& `8 F- O4 d

* S1 u7 V! o8 u  W/ p' H编码范围广6 f5 D2 g5 B! _( K0 e
: V( W+ X- F9 h1 z
容错能力强
0 l& I+ f5 L4 B' _, t7 F( }4 N- g  c# k/ ]! S6 o
译码可靠性高5 N/ J2 z/ f) ?0 u9 m& P
; @) D9 |' u: V( C. u
可引入加密措施% ^( V& P) A) h1 A, S+ r# V& ?
3 t3 H" [9 J* ]) n% ]: U- `+ R
成本低,易制作
; s$ h. x9 c7 f/ q- f/ D, G9 z! e2 h3 K# s0 b9 E
缺点
7 E$ |: }9 h% }6 C7 r二维码技术成为手机病毒、钓鱼网站传播的新渠道
+ w5 r) l+ O8 T3 M
, V) G6 \  G# B9 F, N8 V3 t信息泄密3 t" S: J  N0 R
, k) A5 g' [) L! p  z; w+ |
目前流行的三大国际标准# z) K0 b& m( K$ z! q- E
PDF417:不支持中文
/ V* L  R/ D/ R- l, t
& f. o/ r  D3 O1 O' ^* ^DM:专利未公开,需支付专利费用
  i3 o, P  `, Q8 K+ B& c2 H* i' y; F1 {/ o1 j/ K+ W
QR CODE:专利公开,支持中文
# ^5 y! I6 A) H; N) q* A# ?; M' v/ k1 r% R9 b( Q& O
QR CODE 纠错能力
: e3 M# Z9 p, e+ f6 r/ BL级:约可纠错7%的数据码字
' s$ y& C9 u9 q' N+ p1 z9 N) j. _$ b1 r' p
M级:约可纠错15%的数据码字4 ]6 B4 N, p2 p4 q9 F

" O% z0 t; L. `0 c6 UQ级:约可纠错25%的数据码字( `3 e+ f) s8 h8 i3 v5 q- l$ X# ?
# P4 y' t  |3 V/ N6 O) T6 m
H级:约可纠错30%的数据码字
5 b" a" U4 t7 V7 Y( X7 h$ ~0 d/ }. i
前提条件
# }% z7 s( U8 }( n+ E: z% u9 fGD库  d# P& Z$ H) S4 I' o" ^
+ h8 D9 @* S0 N" `7 ?
一、PHP生成QR CODE
7 E" J7 D6 m, @/ o1 @官网:http://phpqrcode.sourceforge.net/  F- d% M. O; q3 v- N8 }! Q  F7 c8 u

+ O; N* s2 T1 W5 m下载源码:https://github.com/endroid/qr-code2 w1 K0 x% G* V( ]( l

, w' W, K% S- l% Y2 \0 ~5 `目录结构2 j" Z7 q& I- |4 b4 {
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png % r% t8 M5 d/ q* b; a( M- f% H1 C
9 m7 g9 q: K. R- \9 ]  ]
1、qrcode_create.php
) B5 I# p9 J' ^. |) \ps:生成普通二维码
+ e5 q  a6 p, {3 ^2 r! p  Y; c2 N
  1. , ~, ?# E- t" s$ z9 R. [" V
  2. include_once "./qrcode/phpqrcode.php";/**: \: ~9 l' x9 N) h: W5 m8 Q

  3. 1 J1 z1 E, z6 y1 [8 ?
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径- I- i! x$ O( P( v* h5 x1 B

  5.   U( Z. x( R, w1 \3 ~% m6 ]
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 U6 y- M9 E4 Y& s. n, c

  7. 4 u" P- G% ~$ T2 k7 ~
  8. */QRcode::png("abc");: X) x  k; Z+ v8 j
  9. ! t# n/ n2 o& D
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    , U  @  a3 C" l$ B- W

  11. - |7 f; J7 d3 |# A0 x
  12. * 生成文件到本地
    ( F& x( t3 _3 `5 L" }

  13. 8 W# m7 q1 a2 |* o. f+ j$ m! w1 ]
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    $ Q% p! o7 c+ Y5 ~' T, l7 _

  15. 0 K) s3 \, P6 t% H% A
  16. * PS:$saveandprint源码的p6参数做了修改
    8 R/ b3 f3 e- B( v2 W& Q

  17. 7 F$ Q* b) y/ ]# j$ ^
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);3 T8 n7 P% v/ l1 X! K

  19. 5 l# f: J. t) r: Z1 ~
  20. ) U7 [1 z( b9 H- j, M4 ^7 l* O
复制代码

7 l- s5 d; v) s9 I$ e2、qrcode_logo.php
" a7 T% U7 O9 ~: A# c4 Yps:生成带Logo的二维码

  1. ; r3 `  W* M9 n5 D! N( B& P
  2. /**
    % y* L+ J( R% t

  3. ! N5 B' I) D" I1 J2 d5 P9 Y
  4. * Created by PhpStorm.5 g+ ]$ n8 R1 L( F" _
  5. * E1 a/ W% B. A! A8 T
  6. * User: user
    " \& z# e7 z" o: H
  7. 8 n" P+ l+ X( r2 P1 S0 |
  8. * Date: 2018/8/16. A5 T0 n+ W: ]* M4 C6 Z. v# A2 |4 S, x

  9. - ]9 g  \- H7 U. U$ l6 e
  10. * Time: 10:43, f0 u6 Y' h& x" C* F/ ^9 ]

  11. 6 Z6 e5 m' N# N
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    - s8 n- G: Y. ^2 I* x

  13. & O: R0 c$ ~' Z. k/ i/ e
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    - u+ @9 w( z$ C+ v6 f' J4 j) |

  15. 7 J$ s6 X5 B0 I" w5 S% j
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ) m; W4 h5 t$ M/ D
  17. + |' p! `: F4 D+ Z! g) \
  18. $margin = 2;//边距
    5 R6 n4 s. a( E) W$ o

  19. % X0 [$ q3 j: L# e1 \2 u
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    2 s! L! e* o2 g
  21. / T$ r. }, U5 G# c
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   - S" l" h2 U) r' R0 A! j
  23. / m1 j+ s( [9 F  O. d5 |
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    1 O/ h$ ?# B$ l' K+ C7 c( s

  25. ; V2 S8 p- L$ G/ U$ n- ~
  26.     $Logo = './pic/logo.png';   
    * k# m5 m* H) a. i/ P) ^, o0 }

  27. ; |- H0 v) K5 ^2 V0 C% h" W) Q
  28.     $Logo_re = './pic/test_logo.png';   
    ! m! \9 G0 M7 @" w

  29. 2 f' w  ^. P- }$ R" {
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    ) ~! `8 @7 ~* t0 i& i/ M
  31. $ c4 B2 h/ m% h; v3 n& J7 [
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ( A0 c2 Y; t/ N/ Y' A

  33. ! a1 d* V! M- {4 D
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ; W) Z! Q4 X+ v; z8 h* T# u% q

  35. ( N) P3 o2 i1 L3 h; [' Y8 c% m
  36.     $QR_height = imagesy($QR); //二维码图片高度3 H0 z7 e$ ?7 R. @! s

  37. , t1 V2 V+ F8 L8 J- _
  38.     $logo_width = imagesx($Logo); //logo图片宽度" @" |( }) R: g
  39. * ]6 K; l' R% M2 Z: I2 h7 j- j
  40.     $logo_height = imagesy($Logo); //logo图片高度# p- Z. [# J/ t2 S# k1 K

  41. & S* |5 Q! [1 D. v5 R: C
  42.     $logo_qr_width = $QR_width / 5;   % m5 U- C% t' U. G- c3 [: }' ?) [

  43. . _* {, e+ ]$ d* B- j9 ~+ A
  44.     $scale = $logo_width / $logo_qr_width;   
      d8 S( r* L. v: {* U

  45. - f# w  r" P2 U0 v
  46.     $logo_qr_height = $logo_height / $scale;     b/ S' j! G* ?# e( ^) t& q& n3 K% x
  47.   K" R7 Y7 p7 i+ ?1 ~7 W9 }
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    $ P  l) j' P0 w( o% i

  49. 5 ], s/ q3 W5 G' [
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    . K) B7 L; K+ J0 D) [& |% C3 i/ _
  51. 0 L/ B. E3 z* A  m5 e7 P
  52.     //输出图片
    , D! M7 d; U. ^( a2 I7 u

  53. 3 S# G9 l3 m0 N" \" b! R
  54.     imagepng($QR, $Logo_re);# E5 M) |$ R; A2 e* V
  55. - E) f7 V9 [1 Q) I5 m4 _
  56. }
    ; [& X: H+ h- }1 N% `

  57. ! y9 _3 b* C" E! P

  58. ' t) g7 d4 `7 O/ T* c/ f
复制代码
3、qrcode_vcard.php (生成电子签名)' I- L: w( Z, L1 O' d' R3 U
% R6 B  T  ?* F/ d! L
vCard格式:https://zh.wikipedia.org/wiki/VCard4 i' L* `  k4 u- m

+ [9 g1 J: a- u8 T/ |% Q! R- K
  1. 6 U/ |% `. R0 s5 k" \# f$ [
  2. * Created by PhpStorm.
    4 m* R1 y0 c3 p9 {
  3. + C1 b3 e0 A9 T$ |3 t# O
  4. * User: user
    ) t- \  P+ e: r% P

  5. ) V/ Z* d/ t  y
  6. * Date: 2018/8/15
    - }( P0 [" `* v$ D0 |! c$ F" z) Q0 Q

  7. $ Q9 P; X6 e! g7 s9 d7 H8 K
  8. * Time: 23:00
    + w* j# {6 m% s4 `, C5 W9 H( P/ F2 [

  9. ' R" m' r# D. n  [: t8 w/ t
  10. */require_once "./qrcode/phpqrcode.php";/**
    ' z+ E' Q- h8 n

  11. 4 d- I3 r& Z+ ^6 e8 ]" q- z0 Y
  12. * 生成电子签名
    $ D9 A( |7 N1 k1 l# Y
  13.   Y& h- S8 I. |
  14. * PS;使用微信扫描二维码
    - `" X2 q0 U) d5 R5 ]5 [% I
  15. ( `( v1 X: B) n. p1 B/ R
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志% p- R6 }6 O# ]3 G4 I- Y1 c! R7 u
  17. 5 b7 _9 L; ^: T2 v6 M
  18. $content .= 'VERSION:2.1' . "\n";//当前版本8 G% ^" W7 F" W
  19. / W9 ]$ G- i+ v* J. {' R
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    , i) o8 Y7 K2 g
  21. ( S  U- O; j! W4 I1 l/ @
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    5 _5 U+ o* i4 \8 Y; R5 W

  23. : \6 W) T9 f' f) v) S
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位' x1 G# ?7 U9 a0 U- C' \8 H4 t* J0 U
  25. 7 o' @# b) y* Z" j
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话3 H. X7 `4 h! [+ |
  27.   @: N6 D/ w2 u- S1 \3 e9 t' h# }) @
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址0 [9 \/ H3 G* I& I# y1 e
  29. - X, G( i$ U5 e6 \
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)  U5 D/ |2 K) l5 D+ P( r' p

  31. - ?/ Y# i$ P( Y# z
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    0 s$ G" t) V+ P  a- ?
  33. $ @% ?/ B+ ^: `, _; w/ ?
  34. $content .= 'EMAIL:[email protected]' . "\n";//邮箱
      G$ \( `0 u! \5 e
  35. 1 W, y; Z8 I6 w7 F3 T4 n
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页: M7 C6 u; A# Z" _
  37. 2 {5 f/ L* o' K
  38. $content .= 'END:VCARD' . "\n";//结束标志" H: T7 h8 z% e

  39. 3 \6 B. C: r! e. ]$ R0 r
  40. QRcode::png($content);
    . j" r$ v) K) e; v& I! X* B
  41. 8 @3 f) Z6 Z8 Z! H8 f
  42.   u6 b! G- \0 C: ?, N
复制代码
: E' k# u3 Q; i* R! S3 r: J
相关文章推荐:
( Z( Z1 e* O$ Z( W8 C+ C1.PHP生成微信二维码实例
1 O9 M; `& @8 O8 A. j3 b" _2.php网址转换生成二维码
* l0 L+ j/ k- H$ F) M8 I/ P+ d相关视频推荐:+ M0 P: D/ }6 @' d; f4 w$ E
1.独孤九贱(4)_PHP视频教程+ ?0 V  s, m" n
二、JQUERY生成QR CODE
3 n" f, J4 F& ^) D( q1 j2 E源码地址:https://github.com/jeromeetienne/jquery-qrcode
$ H7 W4 M) E% T1 {/ E
- s4 f  }) i, p$ J; v% [jquery_create.php" L1 q1 p6 {, u1 U2 K+ Z; n
4 ^9 p: v* J, m7 E. m& j" i
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

& |( e" c! Q+ A三、PHP识别二维码
5 P2 N4 k/ |* `2 O: m1 _+ c1、方法一
) M( \; Q% S/ Y' H' z6 @0 D) J$ v环境需求,安装如下扩展, e/ B1 i0 r/ |
- ImageMagick: R) l5 I. k5 P  F' F8 c0 \
- zbar  T# W6 `2 @3 M4 k* A3 n0 y& S
- php-zbarcode$ _' T/ E; _- n9 f! y
0 J0 k/ o% ~% v, J0 ]# C
2、方法二  o. k% S& O' s6 i* B5 @
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
. O3 V# E$ f" X2 l, S; z( IqrReader类:https://github.com/baagee/php_QrReader; B0 p( N4 g6 Z$ {  [" T

# n" f( d& @' \0 R  Y0 Z
  1. 0 w1 S) h5 V0 Y. ^* w# P
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - ?8 l# ^% C; q+ K

  3. 1 o) m2 h4 E( Y; S% d
  4. $text = $qrcode->text(); //返回识别后的文本- c7 a; f$ N/ j6 P8 Y

  5. ' H, u4 N8 A! j5 m  h
  6. echo $text;5 d* }8 P9 Z) r! T) b

  7.   J$ E. a9 j9 e

  8. 1 L! T2 R% G$ S" }2 ^* m6 y
复制代码
" E- k8 Q' w5 L/ h0 s3 k
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
( I' c8 K- Y* n0 x3 L3 k" B$ P. Y& H. y

! ^& t% O$ m/ b& X" B$ F8 l  @- G6 j

- `' G' n3 N' w, r4 i7 ]$ |9 g9 ~  @: ?' h2 T+ V2 l5 e0 @
  r! D% Z/ E, p' Z0 u) z

# Z7 C% j: Y' \- _) ~% L* I3 Y9 _! P$ K, |

( I' O+ l& a# @1 P

最新评论

        在线客服系统
    申请友链|小黑屋|手机版|Archiver| 备案信息代码:冀ICP备18019919号-1

GMT+8, 2020-8-7 02:28 , Processed in 0.165155 second(s), 25 queries .

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