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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。) `" A; X& @3 i8 A3 p  f' z/ m
---------------------------------------------------------------------------------------------------
2 E4 e& T! Q6 {7 D" Z+ H! V二维码的分类3 _: z: f# w+ l5 E0 L
线性堆叠式二维码
$ E. }  j0 {# F4 W( I2 A% p# M; a# m0 k- R/ [
矩阵式二维码
- D% G: S" @, Z0 W+ K0 F% M! `
: p* s% [7 [! ~1 L( {7 S/ J二维码的优缺点; E' O4 o) L0 j4 B8 n+ c; |& C& N
优点
& I% q1 b$ }# ]' D信息容量大5 F: y8 z7 u* J" Y% M, F7 s
3 v9 O0 r, Y# I. _
编码范围广
& b7 C* [: ]- M2 M) P8 c" |) C2 N" A* Y1 L  z- `5 ^
容错能力强
: v6 w& ~) r- I  N: y: I8 K5 b# h6 C7 ]* w
译码可靠性高
9 ?; w& }5 H- p& Y1 g  Q
4 j6 k7 h4 s/ Y* r5 o) \, `/ @可引入加密措施' u1 g: Z1 V9 a

' I  G( i, q! L/ A5 p) n成本低,易制作' _" n* k" Q9 O" y. r, A7 k0 _, P
7 k) B. }- m  h( e9 D' a
缺点4 t; _9 w. \- S7 G
二维码技术成为手机病毒、钓鱼网站传播的新渠道
. n" f" ]4 X# r: H- U3 m  v2 y% N* g: X- B
信息泄密
+ b2 u4 g" y2 L. v5 [  Z1 g, q' m! `
' ~7 b: G! c6 P) ]8 L目前流行的三大国际标准
; A/ x! a7 B# i) V; z; `6 k/ `PDF417:不支持中文6 p4 r! i! K- M; M0 R
5 m, Q& ]2 m3 O2 j1 p! k
DM:专利未公开,需支付专利费用
  R& j" u# H0 @$ U  F+ q* V' \- f1 j9 j9 J! {4 `- Z
QR CODE:专利公开,支持中文! }0 o6 X& e% m' e- E
+ m$ r! ^3 d# y, j0 r3 E
QR CODE 纠错能力
8 K; Z  J. M: q% |1 rL级:约可纠错7%的数据码字+ q" D8 l8 D& f
- D+ ^& y" `; h1 g, E
M级:约可纠错15%的数据码字3 ]1 V# j; D0 `& h; O

% q8 J' w3 l- `8 lQ级:约可纠错25%的数据码字
/ w% d6 Q! H3 x1 E' B" n3 I1 `! H5 q, M5 o) D9 f
H级:约可纠错30%的数据码字
& Z7 b9 }7 X( p/ T" T+ e# V3 P0 L, T+ l0 s
前提条件
7 C( y3 c- v  w' k+ V1 N( I$ L: yGD库) Z- k/ {) I! \  R; g
4 s0 D6 h) E* |7 u8 g3 F
一、PHP生成QR CODE2 @. N- l4 y. Q
官网:http://phpqrcode.sourceforge.net/
7 G. ]" k' V, T8 a" \! g) G
6 D: z& F! q$ X% l1 j  m, O. |+ a下载源码:https://github.com/endroid/qr-code
5 W8 o5 s  h, c
  w# z6 V! L1 v& b2 m目录结构: t- J: m4 p- M6 H( U  _( e
/ c; A/ Y9 V: E1 b/ J: ^3 M$ h6 k
8 W) S% N( Y. M9 `3 E
1、qrcode_create.php
" _: t( k% X5 i/ i7 t' Dps:生成普通二维码
1 s$ I1 ?' X1 j8 [) R
  1. 4 @; v; C$ X3 e) m( w% U
  2. include_once "./qrcode/phpqrcode.php";/**
    " ~( q) D, |# i8 h

  3. 0 _9 h9 D0 O/ m$ o
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    & m$ H: W+ r' p1 ]$ u/ t( U5 n

  5. % a& ~0 L! M% _# m
  6. * 在浏览器上直接生成一个二维码(内容为abc)  v' {. L, V$ r8 E$ i0 }6 U! V

  7. # ^. F% x3 g6 n7 ~3 j
  8. */QRcode::png("abc");+ y8 Y( F7 P0 i4 n$ K

  9. 1 i2 m/ E9 C* |, Q; ]: c
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**( c* g$ S5 n: s( P: z3 ]) C
  11. ' {& t  M2 t2 X" F( A* E# G% R
  12. * 生成文件到本地
    & Y, D; ?1 V; M5 I: d! ?

  13. - n  I- w$ i$ g2 ~* X
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印). B1 c( f7 {% o) ^% ?0 |% c8 y

  15. : z1 m3 L3 x, |$ h4 [2 Y
  16. * PS:$saveandprint源码的p6参数做了修改
    * E7 c! U4 p, V5 g- \3 I

  17. $ r9 P: j/ I0 ?5 n. Y% q
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    - S( ~3 z5 t7 j# {6 X& S1 ^

  19. ' q, c( T1 z6 i5 @$ |
  20. 0 {0 _( s; y! y! Q" n* |
复制代码

0 J8 F7 ^, n* F. \# J2、qrcode_logo.php8 ]/ a* ^4 g. @" F
ps:生成带Logo的二维码
  1. . x- d* B# L4 Q; Y/ @9 C; a# [
  2. /**
    % H9 f: {% a" H4 P7 ]8 {/ a$ A

  3. 1 ]: F+ o1 D+ O
  4. * Created by PhpStorm.& v) I* \3 `/ B/ Y; h9 w( q
  5. 5 Q2 Q+ e# H4 T2 [
  6. * User: user6 \. n% [5 `! C. J  z7 D& Z1 D
  7. / H. r" o" X  W& P/ H2 d' X
  8. * Date: 2018/8/16* c- j' k) e7 k- V
  9. " F, `( e0 }% A7 @# X1 q7 t) \
  10. * Time: 10:43
    2 I6 C  B) k+ l, r# B, s1 O
  11. 5 w" j( S2 M3 v
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";% r* Y- @1 C0 a9 @$ S  }

  13. 0 B4 ~( U" n4 |% L6 K0 ^' v  C3 L
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称+ N, t* U# E3 r9 \2 A
  15. 0 ~0 f& o* D' o3 Q% M! u
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是6 P/ }! G# x1 z+ M! O* D- M
  17. # Q. e0 T( [$ W/ f' t0 c' b
  18. $margin = 2;//边距
    / l8 u( h8 {$ @0 N( m% v
  19. $ Z, k" h; G) a6 A/ k( m( B
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片* D3 L% t0 d; J$ N2 J. p* A8 ?; c0 r
  21. ) R8 U/ K$ D, E) }9 A/ z( V
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   # r" L- C8 x# R3 P# Z
  23. . r: W( M. f5 }3 d$ [
  24. $QR = $picPathAndName; //已经生成的原始二维码图9 S- y' Y( G$ f. [5 j' T3 w: c

  25. ( q6 w! |" c6 o8 R
  26.     $Logo = './pic/logo.png';   
    2 H& x% Y1 C: I& w) w
  27. 0 F8 n- X  S; ~8 y0 D4 a
  28.     $Logo_re = './pic/test_logo.png';   
    1 v( I6 [: `1 |! k7 g

  29. " H# j  w' S8 P$ ?
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ) `7 M  S8 {& `0 s+ `& Z4 A

  31. 2 z; O! z4 V5 T" d3 Z
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    * s- z. E7 s% c  [- k$ }" y
  33. , r% }, c" T# o+ Q/ p
  34.     $QR_width = imagesx($QR); //二维码图片宽度9 R6 E. F, i) o0 W+ f1 p7 u
  35. . p/ \" R- G( K( Y% V
  36.     $QR_height = imagesy($QR); //二维码图片高度
    0 p* y4 G1 g0 s0 l/ i1 c0 A

  37.   I( x. h+ H# t0 `2 O) c# f
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ! N9 r# D/ b* E7 ], I
  39. ; U0 e8 U7 o/ s9 B  e7 k
  40.     $logo_height = imagesy($Logo); //logo图片高度. r5 I7 N$ _# L6 j, Z
  41. 8 K* W4 p9 O! T9 x' V. H
  42.     $logo_qr_width = $QR_width / 5;   
    7 T' W2 n$ @6 F& a

  43. . r) b0 V6 _7 _( O
  44.     $scale = $logo_width / $logo_qr_width;   
    0 J3 y/ K. q# r' u% Z$ L6 r* D5 ]

  45. 1 V. [8 |; {0 p; u$ Q$ C
  46.     $logo_qr_height = $logo_height / $scale;   
    ) i) R/ U3 e5 P7 f3 }5 e  [1 A/ h* P
  47. / R  C: H: p+ Z, t* N" L# w* h( t
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;: L' _+ b- b- b

  49. ; ]% i$ _) E  P2 N: y
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    9 j1 _, `: D9 F- t3 f$ P% z( i
  51. 2 U( h9 ?5 j* B" q: A# d5 |3 A
  52.     //输出图片
    % o1 D2 N" b" L# E# U) C

  53. 6 L- w9 T' [8 f
  54.     imagepng($QR, $Logo_re);
    / T4 s+ f0 A, e# B6 u

  55. 0 e2 x) a' f1 [; ]
  56. }( {- N9 ]7 |6 y( T$ \! `( p' L1 a
  57. / _( X( r: n5 l% o. U' ?$ e1 W

  58. # K, ]- T+ @0 A
复制代码
3、qrcode_vcard.php (生成电子签名)5 b6 W" r# A$ ]. Z8 A! ^, F
3 O7 Q8 z' E3 _5 A: m
vCard格式:https://zh.wikipedia.org/wiki/VCard
5 d6 B& h0 T* X6 N! Z
6 j, O' g2 o3 n) E

  1. 6 J2 ]" O+ U9 O4 c
  2. * Created by PhpStorm.
    0 R3 S4 S9 ^# x; k7 \
  3. . [. c: ?- o( b$ _* v
  4. * User: user" D, |9 S* Q- K( j" P  ?

  5. 0 A8 W. |. b5 k; K6 O" q; }
  6. * Date: 2018/8/15& M9 m  c# ~, T4 N6 r4 S' M/ o

  7. & Q( t- d5 d1 R9 j2 ^
  8. * Time: 23:00$ s( V/ L9 N$ ^" c. C# X* `* F1 ?0 f
  9. # R" D. }9 k7 Z8 e& d/ X+ y- V
  10. */require_once "./qrcode/phpqrcode.php";/**
    4 k7 ]1 w4 D+ b5 U: m1 ?
  11. $ i: H; N2 b7 j# O4 T. A
  12. * 生成电子签名/ b: ^% K  t" Z3 m3 w$ o
  13. + y! g+ x, S) Z2 m+ I3 q: Z! x
  14. * PS;使用微信扫描二维码
    - _1 d( o/ F1 }% d) Z

  15. 8 m9 n; a4 F6 K
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    1 H6 o/ ]" p# [9 U- x; N- m

  17. $ M; U( g, Y9 m1 ~* ~( Z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本/ x# Z+ f" }: ^8 c+ X; R
  19. % P* ?7 M9 e* t
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名7 N' L  z) F$ p5 {* B5 f

  21. 9 ^' K2 ~$ x! u3 P9 i6 _
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    3 K  s; A6 K/ s7 _( ]+ R  Z- {

  23. 4 b+ b- P6 `% R7 m
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位& I  u  k7 r+ |: ]6 x! d
  25. ; o, {' J2 ?% U$ e4 w
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    * w$ ?9 f; [/ @3 p

  27.   F$ z5 J( S9 B
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址& O! x: O: p- s

  29. 3 I  y# M8 j: ^+ A5 n6 d5 X
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    % i$ M7 D, b4 K: \: k# [. {. Z

  31. & f. U! h$ A& i- T$ N  ~" M) X
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ' q' V' \6 d/ {$ [$ x" X
  33. + E4 x- U- r* a+ h) A; l9 u+ R5 E
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    + F( |# t* u& f5 Y: w  c- ]/ W1 B% a
  35. 0 Z3 y# a# ~# I0 _) c
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页. s7 P  w3 B2 ^) H# a, P6 I

  37. - b: \1 r. p+ d2 D. I; j& F: C
  38. $content .= 'END:VCARD' . "\n";//结束标志4 |& l% @, a3 w1 I
  39. 1 w: S4 C+ n/ h* [3 D; h" K5 h
  40. QRcode::png($content);
    2 E, Q8 F: @: ?2 ?" q, X" f+ h: n
  41. . g5 Z3 h/ Y" x( W3 w( `. e0 h

  42. 9 \* Z, T. b; i0 L! v2 A1 i+ K
复制代码

) }' m: \" p' ~$ G+ o相关文章推荐:
" `; Y- M) k# E/ {0 Y+ G. x1.PHP生成微信二维码实例
3 |/ H, F0 u& i+ j% P& i3 Z, x' U2.php网址转换生成二维码
; o+ C% O7 n2 v( \. }$ H相关视频推荐:! s/ h' y) C  }/ ]- s
1.独孤九贱(4)_PHP视频教程: G  A4 v" L5 G  A- F7 s
二、JQUERY生成QR CODE$ S$ b! n8 V( m6 S  `
源码地址:https://github.com/jeromeetienne/jquery-qrcode
7 h& w- V, l" E
) ]+ H3 |' q4 j9 H0 qjquery_create.php( Z/ A% P  X% E

" [( _* w" L: q$ V  X
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
% W- \1 T6 i) ?- J# {
三、PHP识别二维码
+ ]4 ?& P& a0 g  h  y4 }1、方法一. Y. K! X; }: C  A7 x
环境需求,安装如下扩展
# p1 T0 R- _0 m" {( ]- ImageMagick
" [& o. @# s& L  Q6 i+ M" E- zbar! [9 I, [0 \# u$ U
- php-zbarcode
: k+ r/ y$ ]  {+ H6 o4 s% z6 y
1 G  A& d% I5 \& V# c2、方法二
$ }. S( M3 |& ]4 Z* WPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
4 k7 r0 t8 N) Z0 O' M+ h6 o! xqrReader类:https://github.com/baagee/php_QrReader+ O% ~, A: q7 X0 ^0 D2 l- l& R  g

, E2 {2 r3 `! T) d; }) T- N

  1. ; Q/ b! q/ u* `- N/ I: {
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径4 m. p% n8 e2 c/ P5 g

  3. ' p4 n& c1 F: U9 n% m. b
  4. $text = $qrcode->text(); //返回识别后的文本
    ; ]/ R3 C2 r- U2 S5 G

  5. * G5 W/ n4 j# O9 q- W0 W$ {4 h$ S
  6. echo $text;8 {- g8 @' W. g) s

  7. & J: _, k8 W- J# |; ~$ Y8 ^
  8. % g  Z) R% q! F8 A$ ?4 d" ~" _
复制代码

  j+ |" P: \0 j7 Z链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7$ L6 _- W: i. ^

, t% ]) V6 C/ Q9 s# U% ?
+ ^3 a8 e* L) H6 L; f6 ]2 ]; L. M2 D4 W/ H/ @+ o8 T

' t2 _' y1 M" |* k- V- M3 y6 e9 @/ {' f# e( d
2 q( e7 K( d" m: v$ M

! h  y$ B/ [" _6 u; C2 y3 p' x. w, j3 U4 Y: }; s- }$ ?

; x+ A3 |& Z/ J2 e% F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:31 , Processed in 0.060560 second(s), 22 queries .

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