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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
& `5 ^2 D; s* z% ^% }+ G# u2 c+ H+ ~---------------------------------------------------------------------------------------------------
4 ?% w$ \6 c& z) `7 v, C1 K二维码的分类' v. \$ `, x9 R/ J; a. g
线性堆叠式二维码
7 u% l; u! Q2 t: \
0 v: K. S; t: z) B* z' k矩阵式二维码5 m  e% d4 n5 @1 n! v  j1 ?% l  S3 u
. ]+ @) C+ z# _1 j2 D. m
二维码的优缺点# q( ]. [) a% U1 R+ J
优点' I  p1 V3 ]4 p- h
信息容量大7 Y6 z+ R" p' z! ?6 g3 l
$ c+ V$ c6 Q. _% t
编码范围广" H' t4 [8 d/ K; t/ U% n' g0 M

' A1 b% q2 j( s" p+ e. a9 I& v# q容错能力强/ j- _: j8 }) \! D
" O9 f! G7 T6 r3 s' ?; q
译码可靠性高/ v8 N* J6 T/ j
$ p7 @5 j/ b) W  {. [7 Y! ]! c
可引入加密措施
, N- T. l2 ?9 L9 Z
1 Q1 X. G" D2 ~6 q5 u- m成本低,易制作' K& V2 W# r5 {

% p# @) t- i+ p; A% y6 H" j缺点
: B$ T  Q$ x, _  V二维码技术成为手机病毒、钓鱼网站传播的新渠道' V; |8 c" @; M# n0 O

  Y& f' [; ]- d( y( ]; W6 q信息泄密
9 Q; I+ Q" g  k, D; b3 n- m# G
7 F- \: `1 Z, W( a目前流行的三大国际标准
  |  u5 [+ E( L9 b) r1 mPDF417:不支持中文- o! z% o% O. o. D4 y
, q8 `. q6 s4 K# n0 v
DM:专利未公开,需支付专利费用
# z  P. f* K* f0 o  H
  w4 |; J( y# x  ?5 ~- wQR CODE:专利公开,支持中文
! m) m8 D% `4 L4 c( O9 e
- l3 g6 R8 n8 ~' S0 R4 x5 P- g* uQR CODE 纠错能力4 J$ i$ y, h4 t
L级:约可纠错7%的数据码字; J; I) S5 _* E% p
  |3 O  k4 ~* _  R' v* i
M级:约可纠错15%的数据码字* G) k3 `  {2 J) S1 z7 v" b
5 }3 x. M8 b6 ?# [' a! q0 q+ L
Q级:约可纠错25%的数据码字
2 A# A( y1 O. r3 z
3 [% [: g, U6 v- ]" b3 w5 |H级:约可纠错30%的数据码字
, ?- Z2 v$ `- W1 W# e; H4 f  I' _+ a# m; E" |" M: p  M  d  A
前提条件1 L. y, L" M5 n9 z* F
GD库& ]7 h1 t. t, x: P( s

- @, F7 n; V8 K0 r一、PHP生成QR CODE# T7 p6 x1 I3 i$ T: c. b
官网:http://phpqrcode.sourceforge.net/' P5 v; q* f+ H3 V+ C

+ S& l) O! R' f* k- t' k5 ~! S2 a; Z下载源码:https://github.com/endroid/qr-code. u* b8 |; _# f" \2 x

1 I' [. X5 K" G5 T8 D' a目录结构
3 c7 Q4 L7 B, ^, @ 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
3 v7 G: m6 n4 l2 t, ]8 K! \0 D3 _8 B1 ]6 m$ `
1、qrcode_create.php  z& s( s" B1 S$ C- |" `
ps:生成普通二维码
" _3 r+ a  Q( Y8 W) \, \

  1. ( t' n: d& J+ [0 O( j, b
  2. include_once "./qrcode/phpqrcode.php";/**4 N3 m1 ~$ Q9 a% q" I/ F

  3. / B! t) C0 p& g$ M6 {# e1 N
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径8 m! `* v" [0 \2 i" ^2 F, Q

  5. ! ~* [- {7 L4 U  s  t
  6. * 在浏览器上直接生成一个二维码(内容为abc)* O/ `2 O* |9 g
  7. 3 \% Y/ D+ L6 J& I$ V
  8. */QRcode::png("abc");, C# o. S7 K0 ?1 [9 D5 @7 w' U6 a* Y, F
  9. 3 N" ]0 i7 m3 \, c/ Z
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**2 t1 x2 u5 m* n! h0 R0 C( i

  11.   |. J5 Y3 R; g8 w3 J! _& {& G) f* q
  12. * 生成文件到本地
    * d# `  d% E; t- j' m
  13. 5 b0 I3 M# r! _" E7 f$ l% N# A
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)9 A1 n1 ], y1 C' D7 N+ g

  15. 9 l7 C8 K1 T1 ?4 n* C
  16. * PS:$saveandprint源码的p6参数做了修改
    0 D4 Y9 N8 w* G8 E, i; m7 A
  17. 0 d' h/ {" l: r0 H$ v9 I* L
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);& u1 v/ p, R* ^9 {; W4 p

  19. $ f8 |( Z5 I( \% S

  20. + S, W+ F! m* \
复制代码
: F- E7 W+ }3 m4 P
2、qrcode_logo.php
0 S. ?* L# R& ?2 jps:生成带Logo的二维码
  1. 7 j  a2 w' g! k  N: n' l
  2. /**. _. l9 b; z+ r- ]0 |

  3. ; ^( s! Y5 f9 }) o
  4. * Created by PhpStorm.
    8 |( \0 F1 V2 R
  5. $ T7 Z/ D! c  X
  6. * User: user
    7 U: ^+ [& }4 T7 ]. T& n% G, X
  7. 6 C* u/ y2 E- T' M
  8. * Date: 2018/8/16
    ! U, s! O( k( n" @- [& t. \7 L

  9. " x( q, ^! X% T, ?, l' f
  10. * Time: 10:433 k1 G4 W  e) ^6 z4 X! W

  11. ! f* k: I' k1 a
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    ( i; [& ~: D$ o) \4 f& S6 r
  13.   H# l+ [% f. C
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    - }1 p% q  r: n/ _

  15. 3 X* n3 a/ p7 H% b: L" b0 m/ ]
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是' D$ o- c) l- E$ q% P. m- L+ K
  17. 7 o% p. L) T; o/ N$ f: r
  18. $margin = 2;//边距8 ~6 `0 L: Q& }( U. [
  19. 3 l8 i( x1 P, T& o
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    # O  h  |' D+ a+ b# Q0 ~1 }
  21. " P6 i" A$ K' v/ p" b
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ( u5 \  n3 }9 O+ r7 T% C! M
  23. , P* ]) q- T1 W& d) J: n! U
  24. $QR = $picPathAndName; //已经生成的原始二维码图) Q8 U: p, ]; }' W
  25. 6 [5 }. D( {8 B$ k. `
  26.     $Logo = './pic/logo.png';   $ }9 l: C3 M* P3 y- ]
  27. 5 Y2 M+ H, F' `5 s" s! z7 q4 T6 ?
  28.     $Logo_re = './pic/test_logo.png';   - e) e- \0 N( ~2 ?2 ]* o

  29. 4 w: j$ t" c+ }, B! K; V
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    , \  @* k$ Q+ a  j) d" R" ?+ p

  31. % z7 V" d$ B8 h: P3 E/ |# r6 n
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   . s* {) d( p; A
  33. 3 s* f. i5 R# T9 Q$ y! L
  34.     $QR_width = imagesx($QR); //二维码图片宽度/ r0 C/ k6 W* O+ \
  35. * M& t% p4 u& _/ l4 b6 B- ^
  36.     $QR_height = imagesy($QR); //二维码图片高度
    4 \' R1 Y4 }: O1 M: W
  37. 4 W2 W4 g& c9 W% T
  38.     $logo_width = imagesx($Logo); //logo图片宽度- @6 f8 K* n2 k: L
  39. 1 D$ N9 u9 \2 N* ?: I  U: o
  40.     $logo_height = imagesy($Logo); //logo图片高度
    3 F3 V+ W9 m2 h% |

  41. ) N. r) U3 U! S' N
  42.     $logo_qr_width = $QR_width / 5;   
    4 w0 T1 {# ^" n% k8 l
  43. ! i6 D  V: O6 }; W3 H
  44.     $scale = $logo_width / $logo_qr_width;   
    4 P4 d1 K0 f, |  [- f  W

  45. / z( J& x2 y7 d* a, X
  46.     $logo_qr_height = $logo_height / $scale;     e& r6 U, q7 `) w
  47. " Q# M- A( n+ K( C! J
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;' e+ s! t# _3 J% F

  49. ! U0 C" o2 ~7 F% o1 }
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    . ?9 |% f+ E* n" |! R  ]( F# v+ v6 S# ^

  51. + h( {2 e* X" G! e+ F) y
  52.     //输出图片  L+ o! A* n7 h

  53. 7 @! J. Z' ?7 Z
  54.     imagepng($QR, $Logo_re);
    - ]7 |1 |! Z- X" N# R
  55. 0 g! \% \# N8 c& R; ?
  56. }8 z$ ~5 q0 H# _. E4 G( _- ^3 b

  57. / a6 @) H; D# @  f/ O- N
  58. + l. D* b6 f7 ?3 ]6 d+ y  i3 @/ d, U, Q
复制代码
3、qrcode_vcard.php (生成电子签名)
( i9 e% u5 F2 l& `
2 l+ ^8 W% O2 k3 J2 zvCard格式:https://zh.wikipedia.org/wiki/VCard
, k8 O8 c# S/ O8 @/ J; C9 q3 f1 C$ t, o0 Y1 X# n
  1. . ^% _  C' w! F# V8 K' \
  2. * Created by PhpStorm.
    ! K' L0 X" G! l$ p0 q

  3. 6 u. }, @4 M# t. i9 u/ }
  4. * User: user
    % ^& y. l" r3 B

  5. 8 P1 q: j5 W0 r4 |7 t+ L
  6. * Date: 2018/8/15
    , p$ j; O) m# q" y2 z
  7. # ?8 l2 R9 i( A$ o$ a$ y: v
  8. * Time: 23:00- n# b0 D& G9 e5 |* o' B
  9.   _" ]4 J5 ]* \+ G# D
  10. */require_once "./qrcode/phpqrcode.php";/**
    " E. P7 q4 H5 E7 x
  11. + |1 x! l/ G& \/ N/ T: ~% w3 @
  12. * 生成电子签名9 ?. F' _% e9 ?- b

  13. " ?; A7 V; ^5 K  L. U
  14. * PS;使用微信扫描二维码0 `; `9 L+ t9 n5 w
  15. 1 E1 L5 h3 U2 y8 c) C9 n4 _4 r
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志) p: t. |; p& X- [. Q3 _
  17. / G) b6 {( T+ w( i; P3 N
  18. $content .= 'VERSION:2.1' . "\n";//当前版本/ Z7 k0 a% k/ K
  19. # F/ @( f) X/ _9 o% C
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名) x8 ?7 ?# y* u# u5 Q3 j/ m/ ~9 b

  21. 4 \6 h3 v* v. O: z
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    " c9 V! E& {* C* }7 j

  23. 8 |! w! o  v1 O! G8 ^6 _
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    4 q" ]+ r2 ]3 q, J. z* j0 `0 k  Y

  25. $ w" T  e' \3 [6 [; K% I8 u
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ( n3 R# Q  z' y

  27. $ G1 Q4 @! _5 Z* ^$ b3 Y5 T; t
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    7 r* N: l& X' o/ i

  29. : t+ l1 j9 V) ]  w
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)3 ]7 F+ {/ M% |3 M, @+ a

  31. 9 T; O8 Z5 f  {, ?) m6 D
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    + z0 J- h) m) {9 N
  33. % X) t9 K* b& Z% o. D$ }- I; H- J3 c
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱0 l1 i+ |/ N6 v/ b, ~
  35. 8 q; c8 b9 G% x; X. _/ p+ q* i' H
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    " C" ~8 g* [+ S/ A

  37. 5 e0 g3 b- I, B; R& j
  38. $content .= 'END:VCARD' . "\n";//结束标志
    2 |$ Y$ a2 c9 m0 k

  39. * U  X; q1 E; V
  40. QRcode::png($content);
    - g; l, Y+ r; V3 y6 |

  41. - Y5 `2 k/ J7 f& t' |) W3 A

  42. / W  D) h, X8 z# y6 J- a: N
复制代码

. K! F" W0 s1 c8 ~0 R相关文章推荐:
8 j# [2 E; l) b. H* x1.PHP生成微信二维码实例
& a( l& E" V! ~  G7 M# T6 C2.php网址转换生成二维码
; ^9 ]! K: J6 Y6 w, M相关视频推荐:
" G) B% v* e. R1.独孤九贱(4)_PHP视频教程
: q) Y0 r0 q% ?+ \0 ?3 O2 M二、JQUERY生成QR CODE
% ]' J# s8 j( B8 @) a* k源码地址:https://github.com/jeromeetienne/jquery-qrcode
3 Y. `; V. v0 G" t0 J& c1 e8 G  U& H5 _, c; w- n7 L
jquery_create.php
: v% v" n# D- b. B
$ }+ n' G7 q" v5 t
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! {4 Z; L, l* H8 h
三、PHP识别二维码
3 }; \2 D0 i; }1、方法一
9 Y0 K6 [" Y9 Z5 z) K  N! e4 w6 H环境需求,安装如下扩展2 s' O" Q3 w: l
- ImageMagick
' k" J) j9 m4 H+ q: d7 X  \- zbar
" m* V7 g5 T. f: d- php-zbarcode7 }7 e) i5 Q0 K$ R1 H& Z
' X  a5 Q$ |. |  V
2、方法二
4 a0 ]6 w7 N# G7 ]PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
# z" Y1 q2 ^- tqrReader类:https://github.com/baagee/php_QrReader
/ Y$ [" v$ c: N* U% ^  H0 i) U! ^1 G# X7 ]* a. K$ q6 m
  1. 2 f4 e2 u# Z+ v9 R; D  K
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    % {8 Y$ M* t* A/ T

  3. 9 m1 x3 c& F9 W' F
  4. $text = $qrcode->text(); //返回识别后的文本
    7 e8 y5 g0 c4 K4 E4 J
  5. 6 P! c; E2 l- R
  6. echo $text;* W: {) O$ Z+ w5 v) `* k
  7. , n; d: f3 e% X6 _* L

  8. 6 w4 |4 U- I" X& e: M* {! t
复制代码
( ?5 F; z! m' A" s
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7% v3 V# H) S; l! p
) f7 Z, o: _2 q4 S

, ?% \: Q* s# ^4 j" e; u) @" @# b4 I
8 v. B5 I2 y+ e4 u5 l& ]
9 x6 V6 g, A( i% k) ]
. Q3 G0 w" Y8 v, L4 e* ~- u7 u* i4 U9 T# s) {6 |

0 Y- B! P; W1 s/ q2 U% `% Y) F' Z4 D) d% b- M

1 d7 m4 o- f. ]7 j4 Z( K/ o% \& o

最新评论

GMT+8, 2021-9-24 17:47 , Processed in 0.109732 second(s), 23 queries .

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