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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。4 M1 S1 l3 A& t6 g8 H4 N
---------------------------------------------------------------------------------------------------
* x8 @+ ?& }8 Z* f二维码的分类
6 @% q. g! j1 u8 Q& [线性堆叠式二维码7 H0 x- t% I% Z! @0 f
6 z, c  Q0 A8 s6 x0 D) F/ e
矩阵式二维码
/ \0 H* s+ b% w- O. [/ W
8 M. H% h7 p( N4 e+ c5 b4 B二维码的优缺点
* \* O0 A. J- ^) `  N优点& t7 t# @, r# r: w& Y" M# ?3 e
信息容量大# S  O% p! I" {* ]
6 ?' O2 B& z/ C! `& [' h1 ]
编码范围广- b4 p% {) P+ F) p9 j# P% i# f
/ K4 Y6 \$ M: c( T
容错能力强
9 m$ j; F$ R1 d! X1 y3 L5 ^3 }0 x4 \( ^( D$ n
译码可靠性高, T5 d; n7 h" m* e2 c1 b
+ w* s/ C$ l1 Y$ X* w( u) z) R
可引入加密措施  U: w1 ?0 ?5 b4 T' U* C" K
# A8 F1 A' \8 P/ ]3 n8 x7 q3 o
成本低,易制作
9 ]5 n# }5 m9 m9 x0 S
4 v) k5 M2 R' X! X缺点
- @3 W0 c: p2 ]二维码技术成为手机病毒、钓鱼网站传播的新渠道
2 s+ t' n$ P* S1 f6 v  B7 _6 w- ?3 R! U+ c1 L: Y4 i1 V
信息泄密
5 O( n0 h% m0 \7 A4 F# J5 O, q
+ O$ C( C1 J7 O2 r( r% t目前流行的三大国际标准- P7 Q; B1 E! N. f2 Y) w5 T
PDF417:不支持中文
9 L, F8 Y6 W; M) ?* h4 g, _' ?
1 j2 x! j% ?6 y) fDM:专利未公开,需支付专利费用
/ O2 I+ l6 B8 Y+ u6 W/ @  q3 U; z' ?, y: X: E
QR CODE:专利公开,支持中文
! i! a+ d. K# [
3 Q4 L( _% L# KQR CODE 纠错能力
& x# ~5 J9 P, ?0 B6 SL级:约可纠错7%的数据码字
3 V4 w* X/ q! \+ v* K. _$ }9 ^  w) S
M级:约可纠错15%的数据码字; Q& L  c8 M; {3 d8 |: Q5 v

- i$ E* H" H% M6 E3 r! {Q级:约可纠错25%的数据码字
+ [" K* }; L* h) T' C. T; w; J/ U2 i2 Z, R% n. e
H级:约可纠错30%的数据码字
/ ^7 x# M& s+ O/ [1 v5 L4 Z5 v  |5 T* C5 Z+ {0 ?) w
前提条件
7 x) A6 C+ K; B, iGD库8 t/ o$ Q/ q( P8 E8 A: g) ]
' R" G  ~! f2 N
一、PHP生成QR CODE4 i2 @. q: x6 ~! b
官网:http://phpqrcode.sourceforge.net/
# S  i$ g: `6 B2 Q4 z9 B  ?7 ~
8 t9 T5 G# m* i% w6 Q下载源码:https://github.com/endroid/qr-code7 B5 c# Z8 J7 @  @3 G- W

. l+ U: ^( f% e目录结构
  G8 Z' O8 m' s 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png " m9 L7 i  P( @* O8 c

/ a$ g5 |# y2 M$ I; n( O+ K! c1、qrcode_create.php
5 s% M! O( A2 `1 Z  Zps:生成普通二维码
0 `; E. c' M( A5 i' z1 P7 z

  1. 6 V# \; p* K* A
  2. include_once "./qrcode/phpqrcode.php";/**
    ; Z1 S8 ?& y. N) e3 Q& v# g- w. A
  3. + r4 w- j( o. [0 M% `
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径0 ]+ f- j9 E7 _- R; i

  5. 3 W: q8 T8 M( j
  6. * 在浏览器上直接生成一个二维码(内容为abc)' T) Z% @! s0 {
  7. 4 _0 O3 i. G0 \" O4 u1 @
  8. */QRcode::png("abc");
    * E' a  v4 C; z

  9. - z% T! D  \# S, ~
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**; x1 T* g. q6 o! w

  11. : j0 o5 ]% }- v8 [
  12. * 生成文件到本地
    + T7 p* H+ P2 S) |, D

  13. ) I+ G+ `+ Y  a: u1 ~. z1 Y
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    / S- s: y9 n7 e% I

  15. ( H9 _1 F; T3 R- C+ P& u) d
  16. * PS:$saveandprint源码的p6参数做了修改
    4 C5 X# Y6 w8 l& B% u  I/ g$ k
  17. , P8 K( o# D5 L0 r3 g
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ a  N9 s! o8 }! i# k7 l

  19. ; D3 s5 A+ B. B7 E5 K
  20. / P/ v& K5 r; B( ^) o" X
复制代码

" v: A) E$ p1 S; q( B3 v2、qrcode_logo.php
6 U' G" e9 a' @. c! G) X+ N: K( Fps:生成带Logo的二维码

  1. + N0 F( H) [' P( O9 O  i9 A
  2. /**
    ; _% W# |+ g  j) I0 e' J* n: j5 V
  3. . u3 K: V4 ]& n% w4 `7 w
  4. * Created by PhpStorm.  a6 v8 z$ P) L$ F. X2 {: \
  5. $ t' n2 ]- O  o- g5 _
  6. * User: user
    ! e' q. l- _) }' s" T/ [5 v

  7. 3 w; d+ ~9 m* Q9 U, g) ^
  8. * Date: 2018/8/16
    ( b! W/ |. V& T6 a
  9. 4 f1 m+ v5 c0 ?1 {
  10. * Time: 10:43+ o# ^" [( I1 B; \
  11. 3 X+ r2 @9 f5 f% T) T6 J! s: b: z
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    $ e# p! V5 _8 ~  E3 i8 \2 X( E. \) ~

  13. ( M  O7 K0 a; l1 X; p
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称& W6 G, C7 O, ?$ ]5 G4 d' X  D4 t
  15. ) A4 `1 a9 ?' c4 s4 d; G9 Y
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是+ ^* ~' K! q6 @/ i' {1 E
  17. 0 u$ z! F, N; E
  18. $margin = 2;//边距
    ; o* p$ _# k0 o, F2 J

  19. % L, [+ F9 F2 k4 }4 }
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    : w5 ]8 F; V. M, X- J

  21. 2 G$ J5 ^4 @/ z1 ?+ g
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ' }: a" h  O7 V; B1 }* @2 Y
  23. 7 k6 H7 C* t5 j$ r- Q. K0 j
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    . `  _) w. S) @" K: t; l
  25. : Q  P; _1 @" ?$ c1 t. X, r
  26.     $Logo = './pic/logo.png';   
    % w" R9 a, `' `' g' i
  27. : \# _  q5 _1 i! m; }+ Y
  28.     $Logo_re = './pic/test_logo.png';   * z5 g+ w- M) }* {- p7 |& q1 y

  29. ( @' _$ K4 N$ U- R) ^7 f/ K; {: H
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   / ~# C3 x* Z# X
  31. 2 n1 \! w( C; S- e
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    7 I- ^- E2 e( h* y. i0 x

  33. / d9 w3 B1 W" a8 W! j3 ]
  34.     $QR_width = imagesx($QR); //二维码图片宽度: W! b$ ~' k& r' ?( {

  35. 9 i# f0 o& U* d* n. N$ G
  36.     $QR_height = imagesy($QR); //二维码图片高度/ q! a. [- K7 S! b$ I. q4 _
  37. # b' {8 N* @2 B8 e% @+ b; d8 ]& D" Z
  38.     $logo_width = imagesx($Logo); //logo图片宽度
      S8 S$ @  j- V

  39. 9 W4 n# Q# k- L/ D5 m
  40.     $logo_height = imagesy($Logo); //logo图片高度5 m  e! ^! {/ |6 p0 L
  41. " I( B1 G+ ]4 F
  42.     $logo_qr_width = $QR_width / 5;   
      y9 l7 A4 h4 ?% j5 d: s  p
  43. ) }/ m. N0 V% Y! R) b# S; j
  44.     $scale = $logo_width / $logo_qr_width;   ( v; O" Z6 E$ @/ \$ @
  45. # U# V2 p* g) B0 {7 g/ U
  46.     $logo_qr_height = $logo_height / $scale;   
    * @& M- M$ S, ~4 v5 H+ t6 T
  47. ; N" J/ G3 G$ ?! z' M
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    & O; x  [1 M! Q1 w6 {
  49. ) z/ F) u8 p- P
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    + A1 O0 O3 R+ Q& r; U$ A9 k

  51. ; z4 j/ K4 Q+ r' t6 f- J( E- A
  52.     //输出图片
    4 P$ \, r) R  j7 Z

  53. ( p+ |; \0 f+ M' {: j8 m6 S3 l/ O  E
  54.     imagepng($QR, $Logo_re);8 @  b; T0 i6 [( B% J
  55. % H3 u1 O- S: l$ @4 j, N
  56. }
      v8 E9 z; v1 Y( v  l0 w* o
  57. : A6 x; ^2 F5 ]+ f- ^, V5 f

  58. ( `9 u! m, T, q0 Z* N
复制代码
3、qrcode_vcard.php (生成电子签名)
  r6 W3 I8 a0 _0 S+ R5 U8 F7 N+ b; X% w2 Z/ Y9 I3 w/ z+ b
vCard格式:https://zh.wikipedia.org/wiki/VCard, z( p  q+ h1 {+ B9 _- r0 ^2 t1 i
3 e% a5 x( A- @/ M3 p: t
  1. # l: T) V- j' P7 s( ]" A/ `, T6 ?
  2. * Created by PhpStorm.; j6 P* L( \6 V- M0 i! M3 d/ d& }

  3. # s$ O) R2 |$ Q+ m* F
  4. * User: user
    & ~! N3 e, d  Q. i- S2 B* K
  5. 7 Y2 G$ G- f! r& j
  6. * Date: 2018/8/15
    * J" n* A8 v7 j2 o5 s. p
  7. ! \: V/ f( t( ~" D4 ?& e# S
  8. * Time: 23:008 O: |5 @# G4 {8 Q# m

  9. ( a+ o3 A& W0 N1 @% T9 n2 U9 b
  10. */require_once "./qrcode/phpqrcode.php";/**
    & R% s. t/ K3 l- Z

  11. . K- ?# U2 z0 g& L% R7 n8 g  [3 ^
  12. * 生成电子签名- ^4 q* u0 f8 \+ _9 G% J6 Y) ~% Q
  13. " |/ Q6 z9 b8 ]* N
  14. * PS;使用微信扫描二维码
    * @6 ~! V' G; q. Z5 d) }

  15. 0 P0 t0 r9 ?) @" w7 w
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    / b, ]. m2 {7 N% f
  17. ; p) D& G; t( }+ ^* }
  18. $content .= 'VERSION:2.1' . "\n";//当前版本  k, Z' O  s- F  {
  19. 5 m% p# q8 ^5 x$ ?; Q7 R' {
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    7 T9 p" M, h% C$ V5 x6 N
  21. ' U  d- t$ O" A
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称0 ^7 Q) @8 \  [) ~4 T

  23. $ H& y, W* f+ P2 Q/ j) j
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位4 k% ^4 ^& Z6 c$ d# k

  25. 4 `" }, B* G; G
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    - R, t0 Q; W! |' Q

  27. ) `0 y9 C$ G4 P* W+ O# H% q
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址1 k. z, z! n* h+ z% I9 W* x! b# I2 u

  29. + l. I: L* A  t3 K* r& \7 H# _
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ! P9 C- Y+ C3 r
  31. 7 U/ T6 |% j9 P- c# \; V' O8 k5 B
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    : `2 Z9 O( J9 B8 U* \
  33. ' V4 u% x5 f& i$ j) S) j! Z
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    4 |* I4 B9 l) w+ H! p" l3 Y

  35. ( D, F# V9 N7 T9 _- i6 ^- u# B
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页" @0 C. P( X3 ?6 Y, w  v) t7 g

  37. 5 J7 X' H! j: z6 k" h0 M" a2 ^) E
  38. $content .= 'END:VCARD' . "\n";//结束标志
    , I" m7 H5 \2 ?$ S! ]4 p" l# F. U
  39. & X3 w0 @/ I. _
  40. QRcode::png($content);
    + W9 ]. c! X! t1 D3 o. a. U

  41. 6 v# F7 s& U$ Y7 Q$ c- E% }

  42. . S6 l5 C% S7 Q3 B: k. _
复制代码
4 o* m1 `  Q5 ^% b0 ^$ ?! C
相关文章推荐:+ O. ]/ i# h, a7 S3 L4 N% g
1.PHP生成微信二维码实例
  q  S6 k3 @2 |% A4 I2.php网址转换生成二维码, y, N! E, q  G4 }, C: x
相关视频推荐:
7 V: ]2 b8 c+ K9 U3 m$ b) |1.独孤九贱(4)_PHP视频教程4 h5 K' Y" G- n- c; b
二、JQUERY生成QR CODE
. _/ [* f* T/ _0 }源码地址:https://github.com/jeromeetienne/jquery-qrcode3 r" B  q& t* r9 V
( l" p6 y) X9 ]" h
jquery_create.php, }5 H; m" _) W' P' F: U/ W
2 G/ }: k0 o( r! R6 J3 h6 }( O1 r
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

6 o7 h. _1 ?7 u# w) H. q三、PHP识别二维码- e" G" T3 c6 \+ p/ G( B
1、方法一
6 r& e3 @/ e( y. m1 p) A; ?) x环境需求,安装如下扩展- ~6 S* @  }; j7 p
- ImageMagick; g( G' X1 m3 S# |
- zbar/ n6 j3 X9 X! w! X; q
- php-zbarcode/ C( I, e5 \# {& N7 _
+ N! {0 G8 l4 N% g6 e1 q9 ]$ q
2、方法二: f- r; c3 H8 k0 p
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以) [- T( G' v3 c4 a+ `" Y
qrReader类:https://github.com/baagee/php_QrReader% d( w! K/ W4 N/ }
" Y& T4 O6 k: j( z
  1. 5 m7 B* E8 o) \% Y# `4 E" b! B5 E, B
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    : P2 p  T, c% |2 J0 K: }7 @  O
  3.   F  M' `3 G) N
  4. $text = $qrcode->text(); //返回识别后的文本9 ?5 O# o# G$ a) r( I% o
  5. 2 ]! l, ?7 y- z2 U- y4 s8 v4 @
  6. echo $text;
    % {1 e' B7 C4 e+ @0 g/ _
  7. / M" m. P  F) C* _6 r

  8. ; |/ \. Y5 j& o' \3 K
复制代码
' o) P! g: ~9 B- W: d: Z' D1 O
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7* b' r2 s0 U) T. C3 G0 s+ H+ H9 d

& h7 g- ]' ^1 L' n) D8 o4 y
. t6 M, Y1 ~. `/ w" \. {0 a6 w8 P: p: \4 d4 {+ U3 F
4 ]" D% ~, U& U/ O; F. x5 j1 u( Q

* C* J3 T* C0 S
1 z* e! e0 c: q8 J5 S1 d+ I) j' P) t2 z8 I

% t1 p8 H) s  v  a8 [7 I) d4 q( p. `, z% W! L

最新评论

GMT+8, 2023-9-23 01:34 , Processed in 0.147128 second(s), 25 queries .

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