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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。3 Z: W6 G# Z9 A" p! T
---------------------------------------------------------------------------------------------------* d% f) P7 a( a0 {2 ]- O" G
二维码的分类# |# ^0 E+ _3 f: o0 z( S
线性堆叠式二维码
3 _' j* C( n3 O9 h, ~) `, z& o5 U
矩阵式二维码3 V2 J! H6 i  z

$ Y  n: s4 r7 \5 A9 t二维码的优缺点0 g; x) A/ C) f! x( K9 H7 e. z7 `
优点
  ~2 R5 o/ A. q) a! }3 X8 I5 ]3 h4 V信息容量大
2 q* ^1 ~3 X" r& B6 v
& Q- w3 N9 e9 J6 E编码范围广% l" o! l2 R$ h) b

3 N% Q  U& x$ i/ x% U: c" D6 r容错能力强& @1 m" D( a& o) D, H5 ~* c
8 m  n1 a3 \9 j8 q
译码可靠性高
3 M, o) l5 X6 z& a# d. L$ J5 F4 _. D1 z: m8 c
可引入加密措施
- f2 @* Z3 a" S* S: N0 l4 O  }7 Q9 s  f" q# }
成本低,易制作$ }. a$ i3 T2 F

  m% ?, [$ F% p5 L% I% P/ d! h缺点3 _2 Q6 v9 _, M4 k% ]' Z, v& r: T; B( }
二维码技术成为手机病毒、钓鱼网站传播的新渠道
/ w; x: h6 e9 `4 O  D+ k: w7 @( R$ b$ c
信息泄密
( e. j; h! @' Y7 ~
3 N+ C/ f; _- b( g1 Y3 c% B/ ~目前流行的三大国际标准9 F' ]7 g$ b. A3 t/ o0 _
PDF417:不支持中文
/ v6 l, M" s0 F, e
  g; |" a5 }/ f' C5 }1 {DM:专利未公开,需支付专利费用4 D/ ]' L8 g1 g# Z3 h  `% u
* s/ C; a$ o8 |" X  Q. K2 o
QR CODE:专利公开,支持中文
+ J2 B0 Z# l. @  k) a  [8 z+ V6 d- [
' e: k% ^3 ~9 N- u: g4 X4 r, MQR CODE 纠错能力7 w/ S! W: n. i0 @
L级:约可纠错7%的数据码字
  `1 Y/ e- Z+ c/ J
3 U) p9 T; L1 [; O( j- }. cM级:约可纠错15%的数据码字/ z5 A7 ^' ~9 `( p' ?6 d( V

, s0 s# x5 e1 M: i: o7 uQ级:约可纠错25%的数据码字' Q% f8 X! i9 v9 _2 s

8 r: x; w6 J& e) }% Y% s% dH级:约可纠错30%的数据码字
8 A" I# u$ Z  O2 F7 K3 f% _( B0 A; g5 |
前提条件
( J; u, v) N3 @4 F  ]( p$ mGD库
& h/ S8 m! G% G) n  a% ~2 G" c
+ |) k6 ~8 \! H! j1 }8 V$ J一、PHP生成QR CODE
+ J  |6 U# K0 P- D; _; @官网:http://phpqrcode.sourceforge.net/
) P& `, c% t1 \  ~, B2 t" m+ j7 y. Y0 }8 R( D9 t8 U
下载源码:https://github.com/endroid/qr-code
0 l4 L4 E6 z6 x& ]3 B; c
% X0 R( r3 {3 j/ [: N+ z% c# ?2 @& E目录结构9 R3 S( \6 _6 j* b: M6 p1 [3 [

" z( {# _* Y- m2 f  Q$ X; H% i9 a, X# h" v  @
1、qrcode_create.php- B4 n) l* b: C( B5 c( i0 d
ps:生成普通二维码, i5 P  \) Z5 {+ u
  1. ! I2 i1 U, H% t: E- O9 {
  2. include_once "./qrcode/phpqrcode.php";/**: D* Q- P3 H9 @" `' D; U8 a3 J" _. D$ P
  3. ' j6 h8 L% a% `) [, o4 P. e/ i
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    5 G1 S! Z4 z; h# f8 \8 `  n0 M
  5. / k# c$ ^) U: e) N/ q" G6 l9 s
  6. * 在浏览器上直接生成一个二维码(内容为abc)9 ^/ v' {3 ~2 H: j# e1 C

  7. 8 l  p& K4 T1 c  ?" X1 T, c- q9 @
  8. */QRcode::png("abc");: i7 O/ {# W. [
  9. 1 C+ `) ]8 B$ }' y4 _8 O
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**/ D3 F2 q7 i3 H+ ^3 r- N& o' }
  11. 1 C4 t9 F$ g. v+ l! G
  12. * 生成文件到本地; W8 }% c8 V# ?4 |5 i. V  }
  13. & l3 e/ [9 c$ S3 Z7 G( N. L
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)/ Q9 c8 H: v, X
  15.   R& V  x$ C% Q& k. k
  16. * PS:$saveandprint源码的p6参数做了修改
    : C; f+ d" y2 ~; q# }6 k
  17. 1 [8 V  F: P8 i7 r5 q0 d# E1 J
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ X3 e# v' G1 Z
  19. * }$ ~. X  _3 R
  20. " u- c( V+ @. [5 Z& C+ c- \
复制代码

- R" J+ @% [8 j6 L8 i' t2、qrcode_logo.php
  k$ u9 O; w/ D# M3 ]ps:生成带Logo的二维码

  1. 2 |% o8 l8 ?! o* `# r% ^8 ]
  2. /**) q1 c& m' r+ @0 l- B1 H

  3. 5 {! i4 m% \# j
  4. * Created by PhpStorm.& J' H1 V+ I( h. ^6 L. T1 a1 Y2 p* G

  5. $ @  E9 {& L" S# v1 D/ S+ G  w
  6. * User: user( G* B# d0 v4 d! l- i

  7. 2 ]6 Z' K7 q' r( O0 W6 r8 B
  8. * Date: 2018/8/16: Q$ y8 ]0 `* q3 C: R

  9. " d) \& p# L* o$ l3 @' J, p! F/ R( u
  10. * Time: 10:431 S7 U) A4 S& X1 ?5 X( t$ x3 p0 v: W
  11. + F5 H; E+ N8 H$ F
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    * Q& R6 a  i- i3 `1 Z# D
  13. 6 B, Y5 r6 G9 `) x, o% Y8 F9 r
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称$ r5 E9 a2 s0 w, Q  j( e+ F
  15. $ c7 |0 O1 F* K( h. F
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是/ o6 ~/ T, e3 \/ I

  17. + M3 x3 W( m( e8 B  z
  18. $margin = 2;//边距
    # _- k5 X& P! _4 |, J& B$ i
  19. # L1 B9 k  r' h5 ^& p$ V; O
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片( R! j" z) ]. Z. j; U& h3 \- ~2 J
  21. 8 C+ ]' y9 C* L+ Y+ W
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    2 @( a9 [3 d; v, q# r- n
  23. 4 a5 V) G6 ~" f) ]0 t9 h: p3 r
  24. $QR = $picPathAndName; //已经生成的原始二维码图) B3 ?( p! w; ~7 R' K

  25. & G2 V; V$ V0 B" J' ]' Q9 L
  26.     $Logo = './pic/logo.png';   
    $ m* S, ]+ e5 \/ J$ r' B/ Y
  27. " d* b. V5 k4 U7 w
  28.     $Logo_re = './pic/test_logo.png';   4 z' m! T( X4 b9 Q

  29. 6 p! g" B$ [2 b- k) N! ]
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    ) R; `( G# V1 w& X- `
  31. 0 M5 t2 }( |  }3 n& H" v4 P) k
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ! h* a4 X% Y* q/ y' L

  33. $ G: g- x8 s- v' T. {7 n
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    4 d7 u) Z  |$ r7 l2 ]
  35. & o( `% k* q' C" k! B
  36.     $QR_height = imagesy($QR); //二维码图片高度
    # \) U4 T: Y1 w

  37. . K+ }0 W1 B6 M
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    0 T- w; \) S# }  B

  39. + D) S5 ]* {, @% @* G) ]# x6 m
  40.     $logo_height = imagesy($Logo); //logo图片高度, b4 Z' a& n; O2 x2 J

  41. 0 u) G! R5 B5 @9 F( y* u
  42.     $logo_qr_width = $QR_width / 5;   
      |# t" J" c0 \! C% h( A( [
  43. ; A/ m, V) L6 B2 t+ B
  44.     $scale = $logo_width / $logo_qr_width;   
    ) K: r3 y* S$ U% c( H0 r

  45. : c* P- u- s, w3 [% c* W. r
  46.     $logo_qr_height = $logo_height / $scale;   
    0 A! P' L4 `3 m: B

  47. 3 q9 [8 X+ u6 v% `; F% B" }
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;: E2 {9 j" M( R# i2 G% V1 a& |

  49. 2 H6 q- x' ]# B" z* r
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    9 R# k. J! Z  }% B
  51. 0 c8 g  q: \  x1 G; y
  52.     //输出图片
    & \8 }& m' a5 m: ~/ _

  53. : `7 ], c. p% ?+ s# h
  54.     imagepng($QR, $Logo_re);% K6 z' S$ O9 u
  55. $ y7 s) `3 c, n/ Y! M) Z  `# ?5 p
  56. }" V9 n; d6 v2 d# Y& G5 c

  57. & M: M2 G) x. p1 a* v* b, o

  58. * K# Z4 {1 `7 x  j
复制代码
3、qrcode_vcard.php (生成电子签名)
" z0 n/ `; H. u- E+ C
0 l9 d% p" \& P% k/ E. _7 YvCard格式:https://zh.wikipedia.org/wiki/VCard# @: ^( Y0 Z- [% ]% t4 r

, W; ^, j% V( J+ O
  1. 3 \( o" [! ?" P6 A# x
  2. * Created by PhpStorm.
      R4 a- m. u* H. F0 R

  3. 4 ]0 ~9 F/ h' E" K) O
  4. * User: user- Y4 u' V3 m$ p
  5. 7 T5 e. ]" ?8 h6 j% H
  6. * Date: 2018/8/15
    0 ?0 `# @4 i8 [
  7. 3 {$ C& }) D- V4 V
  8. * Time: 23:00
    ; I( U+ V( H  {8 j& J) G
  9. ' O+ ^( z9 T- e- z- w8 j
  10. */require_once "./qrcode/phpqrcode.php";/**+ ~2 e  _. {* k6 }  w& d4 S

  11. % }& z; ~- D3 O7 T
  12. * 生成电子签名2 u! a* B- a$ G2 G4 U
  13. - R+ d8 h" I* Y5 s  n/ B
  14. * PS;使用微信扫描二维码
    ' j" l# O3 a5 i2 ?

  15. : X7 n* z( x' Q" b8 b  X3 M, E
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    * }3 q/ B& t- d" @/ A

  17. ' H5 V) u2 D) l. V( S6 G, {
  18. $content .= 'VERSION:2.1' . "\n";//当前版本3 M; X" q: s1 D8 L

  19. " c* C5 T0 o+ f& M+ y- c+ j( S
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    0 o& A, z7 u- A; U* b2 L
  21. 6 R- o1 x+ `. i* a$ j, s# h
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称9 {/ X3 B) |0 K2 E' L% n; Q
  23. 9 ^% H, f! p# y2 V
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位2 R* {5 m' }+ \9 R# P( B! F
  25. 9 T$ j/ Q7 ]2 e' `- s" @
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话% U* O! [: U# i; s9 r

  27. : d3 l7 g, V+ g* J
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    - Y4 ]: E% C0 a+ W
  29. ' L5 a" |+ F/ Z8 P) N
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    5 W$ N) w0 u4 O8 D, p' T/ C
  31. ! r. P8 d+ U7 r+ Q  A6 c
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    0 q9 N8 C1 W* G3 [9 G2 D' g1 @$ l
  33. # Z% U5 e% `) r3 x
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱$ o  e  P( i) X, ], c4 [
  35. 5 P' d; `) c) k- o! l% J2 \6 P
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    . |# u% Z7 q1 V

  37. + {2 N7 W% Q& u4 c
  38. $content .= 'END:VCARD' . "\n";//结束标志
    " U$ J! G; c- r( \: c# v" x. h2 J

  39. ; g( j9 g7 ^1 l" e
  40. QRcode::png($content);
    - T! W& x! p& A8 N0 [7 X
  41. - P" k5 Z8 s' q7 @% N. n; n
  42. 9 I! E& r- D; z7 f' m
复制代码

; j3 O" E1 V- V& u& v) c% C- r相关文章推荐:4 R/ k$ Y& ^9 [9 E* R$ H- Y
1.PHP生成微信二维码实例
: _9 a' p! X; S% T2.php网址转换生成二维码- z' B: J1 `" }( L( ~5 p
相关视频推荐:- L& [: g% V  @* h* e8 T
1.独孤九贱(4)_PHP视频教程, j- o( ^/ z$ P( i/ P% m* E
二、JQUERY生成QR CODE
1 C- {# Z( p' f1 k% ^; U! w源码地址:https://github.com/jeromeetienne/jquery-qrcode" k) k0 A+ \( O6 M- {# R- g7 S

6 U+ i1 f0 Q2 d5 x- C$ F/ H: N# `jquery_create.php
3 w, c1 L9 i( y, k  @) T8 B0 T* G* E: M2 i8 p' Y4 R3 G
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

4 ^2 I* v# t1 ^4 E  w3 D三、PHP识别二维码
1 S$ W% `- i$ H  L! I: {1、方法一
  X! a4 G' K* R0 F) x* k$ T环境需求,安装如下扩展; F: |1 S* o0 {! |- v
- ImageMagick
8 k5 J! t% k4 P, O+ a! X- zbar% l# C' e* g% _& Y
- php-zbarcode( L6 h+ t4 s  r1 t( d) R9 m

2 R; I: ^1 v9 t% q2、方法二* K5 N3 c, T8 F$ [! N
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
- A: d* ]8 ?% g+ R: K' zqrReader类:https://github.com/baagee/php_QrReader
3 ?# l' H, p/ _3 O( b8 C/ M' L) I! J: L0 S4 K, I
  1. ; G3 l, \7 r) U# P
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    $ \* W% |( ^  W: f3 x, h

  3. 5 Y1 P) R  U8 D* [" k
  4. $text = $qrcode->text(); //返回识别后的文本, @' w! W0 ]' V5 R

  5. , y: I9 A- v+ W! p! J% j1 e/ h4 i
  6. echo $text;( u* ~' V. L; j- d$ i; ]4 m
  7. % ?9 ?: c- l( R8 V) R1 D
  8. 0 w( b8 M! L% V* R5 J5 h9 e; h
复制代码

; q% O. n8 r& N链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
9 e* Q: p, Y5 q6 [) {+ I
: F3 S9 E, J  X, v9 n* _  D; m7 [# k# |& E

" o# c8 E! C+ J( c$ k; S7 a0 ?5 [5 S5 Z
6 C; f) m& `" s% n; J( f# Y# Y8 J& e. c. e
/ \% ~: H: Q$ U7 h0 p4 a
3 R7 ?( i! d( ?1 G8 v2 K% s

; Q' w/ g+ p  w; L5 K2 B3 j2 K' R- L' X7 S9 e5 ^

最新评论

GMT+8, 2024-4-26 07:38 , Processed in 0.139675 second(s), 22 queries .

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