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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, H% S& A0 J1 z& b---------------------------------------------------------------------------------------------------
$ ?# T' N, T& R3 c6 {二维码的分类: \# j6 a& o/ p) Z8 T/ V* [: r
线性堆叠式二维码
' w7 N3 ^5 J6 f; n' i3 h/ m- e  y8 ^7 M6 B, o* r
矩阵式二维码
9 ]) Q5 W* H6 I) {$ A; Y
) L0 ~$ V9 k; }6 v4 C- b+ l二维码的优缺点7 y9 B7 F" x* H) B1 W4 Z& B8 X( V
优点
! {; J' r3 H0 S: }' `1 Y, T3 y信息容量大
% ?0 r0 k4 {8 Z4 H9 c* Y( C' d2 F% O
编码范围广, B; E4 z9 E* Y! m
3 o3 y5 r$ T" {
容错能力强0 k0 D- w0 _  O" d' S8 C% a  ?. n# z
/ O7 R" K8 {; _
译码可靠性高, Q" ^9 Q7 ?) B5 F1 ~

$ L1 D/ N' O0 _1 O1 N) F可引入加密措施
7 n! m' ?" K1 i+ v3 i1 C$ C6 \5 K( F2 x5 E2 R
成本低,易制作' k. e; u) c/ c& T  f% {% ]
( n& _& a- B' ]0 P4 \+ O/ s
缺点# q& |7 G3 A% {* v$ q! T2 y
二维码技术成为手机病毒、钓鱼网站传播的新渠道
' ~4 I7 I' _2 w# g6 E4 r( ]# ]7 c. K( W' g: P# Z& }# R3 T
信息泄密
% y5 I0 l( ~$ I2 E6 }* P. F& z# n0 s6 I. ~/ h
目前流行的三大国际标准
. T4 C: Z4 a- ?6 l) E: @PDF417:不支持中文
# k/ [, n- \0 e2 q3 H7 e" e. ^' H! P3 s+ u4 a+ ~! P
DM:专利未公开,需支付专利费用% a; s0 Q2 B$ s4 |1 x
% F2 B* z6 }! G$ L; t4 F2 p
QR CODE:专利公开,支持中文
' }. N: c( p- D7 U0 B" W5 L  K4 q7 b5 w. y, V
QR CODE 纠错能力
7 x& Y0 ^1 p6 j8 J( t% \L级:约可纠错7%的数据码字& ~$ R/ p. N5 y7 Q: D$ Q

, |$ Q* n2 e  Z9 a$ I$ bM级:约可纠错15%的数据码字0 Z* q1 e# ?1 D
$ Q' ~0 C4 k* [1 F& K1 \3 S
Q级:约可纠错25%的数据码字
7 T1 {( b' E9 r0 n7 J% N/ \- b+ Z1 x8 [% }) ?4 g1 \% f3 A
H级:约可纠错30%的数据码字
, G/ v4 Q" J8 s+ {. T% v5 n4 D% h% Z% P: @" g
前提条件! D/ p& H9 G5 g3 w0 E; _+ ~
GD库
# {2 P' ]" i  V, U) L3 _: P4 W1 q4 f4 s/ F/ F
一、PHP生成QR CODE$ p; Y, p% g- R( ~5 u; M
官网:http://phpqrcode.sourceforge.net/
9 ?% M7 P' L) Q! \5 a* z3 Z3 ^! r1 g; M$ ^- _6 W
下载源码:https://github.com/endroid/qr-code
! A- L; {) _5 [) t/ P& A" V  b' o: ?) U/ W/ w7 l
目录结构
) L& [; {- I! W; K2 }, d9 r& c
' j/ r8 b6 _; A0 s4 }  S$ O, ~
, P' k7 D+ n+ E) z& Q2 ^; s7 S1、qrcode_create.php0 B* [0 A  w/ A0 l6 B" M
ps:生成普通二维码% ^. V; [& q7 _
  1. 5 F+ I8 K8 Z* [$ _! ?0 }7 `; A" \
  2. include_once "./qrcode/phpqrcode.php";/**5 W: w  W  K& r( X+ K  o; ]
  3. ( q+ M  p: W1 L/ \) c; K- s
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    % R/ B- a/ h! F
  5. ) N2 t1 \. d/ l$ ]4 I* D
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ) R5 x# M& e$ q( J
  7. 5 l1 B0 E5 Z" ]& X. z# `1 j
  8. */QRcode::png("abc");$ H0 G3 u' F$ G4 t9 R& U! [
  9. : ^4 |- y* D5 j% @
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**, S# h$ O- A% F! i9 [
  11. 9 @& `7 d; Q' q7 X, T1 ^; C% M
  12. * 生成文件到本地( f( I" x6 P0 v* j( y; V' K  w  u

  13. 0 a- H6 G7 t" I
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)4 x. d" j! @; h0 v
  15. ( z% I0 j6 Q) u  s' n2 M1 o! M; p, U
  16. * PS:$saveandprint源码的p6参数做了修改
    . M' G, J1 |3 b6 W' n

  17. ' x6 S" L! h! H2 k0 C
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    * n. E8 [5 h9 c" Q& q8 i* ]

  19. 2 X# @6 u, |1 w2 N' \
  20. ( h6 l9 h6 @5 _( O- Q
复制代码
$ x; A- x- F7 e
2、qrcode_logo.php$ m. u, H; n4 M8 [1 d/ r# z& y
ps:生成带Logo的二维码

  1. 6 D7 t5 B) o7 B
  2. /**$ x0 K1 C9 C7 V$ R9 n3 y& i8 c
  3. % t% _) S3 W& G$ Z6 M% n4 h( Q
  4. * Created by PhpStorm.; r' t1 ]- r: x* Q1 J0 ^( K

  5.   P: X7 s* l0 @0 B" R7 Y3 j* G1 J
  6. * User: user
    ! h5 S2 P0 O3 P8 A! O

  7. 0 ~' B5 _3 J) x! Z. h' p3 U
  8. * Date: 2018/8/16% E7 ^5 l6 n' d" M, S
  9. , o, m7 i3 f* ^
  10. * Time: 10:43
    , J8 a+ q2 g' T8 l/ v. A
  11. * E/ \$ F, N# W8 t
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";: x3 d, G7 C& t1 `
  13. % T! P9 q. O8 _! d" C
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称8 f& m' _" [3 F. b- y; X

  15. 9 E. p2 O# b- {/ L1 f
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ; ]# v  L, Q$ i# [# M/ A

  17. , H! s  l5 N5 y8 [* t' \
  18. $margin = 2;//边距
    9 N: B5 H: p5 |6 \# m" S

  19. 9 U- k- n0 P/ T, Y0 s+ S" p
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    0 f% d; M1 c- s

  21. 4 U3 n* n! I3 x5 @) a
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   $ l9 _5 U; O" D0 m6 |+ r

  23. $ U1 |6 ]$ _2 M- {$ t
  24. $QR = $picPathAndName; //已经生成的原始二维码图) c* m- K0 g7 V1 r

  25. 3 Y6 g! {& B8 b+ r$ \+ I, Z2 b
  26.     $Logo = './pic/logo.png';   
    & v& V" l7 o6 L$ t$ e  a$ B6 g! H5 k, i

  27. ' n1 D) M0 P: D5 P/ ], E4 h8 c
  28.     $Logo_re = './pic/test_logo.png';   
    $ g5 \7 Z) G2 f6 E9 p6 ^! B3 f
  29. ( O8 F& l! m8 L9 T; F1 |
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   7 a1 [1 {: V% n6 {8 }+ K
  31.   D$ q: O- `  ^: a' U8 _% r7 x, U% i: s
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   0 z0 K, o8 d/ v$ p4 g/ H
  33. : t, V! K5 n) V: k- W
  34.     $QR_width = imagesx($QR); //二维码图片宽度) M  \9 F  t3 P4 {* E

  35. . J/ G6 v8 _, Y
  36.     $QR_height = imagesy($QR); //二维码图片高度0 g4 @% R$ }& ^$ O

  37. 4 s& w; T( m* M; T  O. O
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    . B6 f$ c' |4 g- Y" _5 b
  39. . d- E8 M3 L, A) M; H8 S
  40.     $logo_height = imagesy($Logo); //logo图片高度( H8 i1 K8 K3 _% F

  41. 5 c. t0 K- v! b+ q' ]2 p
  42.     $logo_qr_width = $QR_width / 5;   
    1 M/ S* E$ D! l) A9 r
  43. : T# Z- x! S! U2 m
  44.     $scale = $logo_width / $logo_qr_width;   
    ( P( e: ?$ |' X; v
  45. 0 H9 m6 @* E) A# _# x$ H
  46.     $logo_qr_height = $logo_height / $scale;   5 W- P& r# C- ?) l! q
  47. - q7 @: h$ r/ F$ u: F# x
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    # ~/ H2 h# a3 p

  49. . y9 d! k. n& M$ M
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    . z( x$ f0 y" L' d8 ~/ |( b
  51. 4 N$ c4 {0 t2 K
  52.     //输出图片7 S& K  \) V. _/ A2 p
  53. * h# x; U. b* {  o& [- @
  54.     imagepng($QR, $Logo_re);' O7 g( a& ?6 \: I

  55. % h+ Q) j! y! E
  56. }
    " t- g* L8 u( A5 g
  57. + `5 O% \" L; g: f
  58. , h0 _9 o* _2 t, \  |
复制代码
3、qrcode_vcard.php (生成电子签名)
$ @/ ?4 e% ^$ {  L- X' c6 B# O; `& S( x5 I
vCard格式:https://zh.wikipedia.org/wiki/VCard; d8 K0 t& X0 h% `
5 [$ Z8 ]0 z8 g
  1. 5 v( a  ~* @) M/ C" z8 a
  2. * Created by PhpStorm.
    3 D, z. Z; s! h! S; L5 r

  3.   u0 \% K2 p' p
  4. * User: user
    7 w8 d4 A3 h9 r# [: [9 ~

  5. 7 v5 V) X: k# O# G; a$ B5 C7 l
  6. * Date: 2018/8/15
    8 |/ S: c0 P: i8 P5 i9 K
  7. + v# x0 p1 R: y7 Q- {, g. Z
  8. * Time: 23:00
    7 Y* J5 o( q8 c, n. r1 b

  9. 6 L: a' M, r6 y4 h& N, }
  10. */require_once "./qrcode/phpqrcode.php";/**9 {- G$ A  k+ ]+ d2 _8 h
  11. 0 x/ T- U- v3 a* `
  12. * 生成电子签名
      D6 k# b6 Q2 ]  g' s! b

  13. 0 _, O$ y: g7 Q: ]  K% Y/ _+ ]
  14. * PS;使用微信扫描二维码3 |* c5 R  a5 @& T4 c
  15. 4 h: s$ f- G" W9 R( x) O
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
      T1 `5 W1 s, a- X0 O( S3 P

  17. - A, X1 X( W+ P6 K/ z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本# F% V$ H, W* ?- H
  19. ! b! Q4 v* I5 ]; Y8 ?6 p: i  z
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名% \. p! e) l, g& ~8 k
  21. 1 z) B% W) ^9 e- r* w6 G9 l' d6 L
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ' X. f) Z+ n: \& D) C) n2 n

  23. % i' v3 i( x4 @4 K0 P
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    7 D* {4 K" Y' C, V  N

  25. ! s+ W* S5 U: Q. C+ J) F* @; I
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    1 f: I2 O. }0 y6 V  g
  27. 4 G+ E- w  d% i& a. D/ q) K
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址8 u0 R; N5 ]: N6 ^

  29. ! c9 p$ a- p$ @% ~- z) u8 m/ Q
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)$ o- |- s  g- m+ b" E
  31. 0 r2 W5 b+ y! \- F1 s  c
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 E5 X5 u5 m/ X: [( {% R
  33. 5 C6 u' l- h. |+ e! `
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ' w; O3 N4 U; G7 ]/ E+ W( }
  35. 8 h, j& _' `; H7 W: j" \! ~
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    + \+ l5 ]8 x+ J  }
  37. , I2 q/ I1 F: G9 d! w! S
  38. $content .= 'END:VCARD' . "\n";//结束标志
    - s- X: A# x, I0 o$ X

  39. 7 ^" Y- Z/ _$ H
  40. QRcode::png($content);6 `3 K6 B7 ]! m2 P/ q* c+ K
  41. , A' r* w3 ~) t4 n2 `. Z! T5 S
  42. 9 D" |" Z- e5 \( d
复制代码

3 a1 P# z6 D( A1 Q$ ?相关文章推荐:
4 i; h1 N# P. v4 b/ P! m( F1.PHP生成微信二维码实例! F* O9 b' X& t6 X+ {
2.php网址转换生成二维码
5 {1 Y1 b: _0 \相关视频推荐:. o+ l: h& K5 d* D) L" K
1.独孤九贱(4)_PHP视频教程
+ R0 F) \* t" ~6 H5 P二、JQUERY生成QR CODE
/ z5 }. Q6 Q" Y3 V1 F" ~" T源码地址:https://github.com/jeromeetienne/jquery-qrcode6 c6 ^; w5 D# ^9 m# s  o
; H6 E, g. i( ?- g3 P
jquery_create.php" k; S/ i; x& \5 M* E* b2 X4 s% E: f

2 s& ~3 b$ f3 Y' [
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
: @0 h; a% A* S' o, \" g
三、PHP识别二维码5 s# t5 x' l9 {  q( T
1、方法一
  L: `' p6 q) @1 {- x: Q8 W环境需求,安装如下扩展
, V7 l2 M/ j% J6 d! p- ImageMagick
4 Z- ]# A- G; i, S: Y. [  Z- b- zbar; @5 y# M, }% a# G  l' m
- php-zbarcode0 m9 J  N( W$ A
7 w  o7 ?; n; C- J& [4 f! U
2、方法二7 `7 o6 O/ W5 [& x: Z! Z: D" x
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以6 H6 x# q6 |8 Z4 v2 p
qrReader类:https://github.com/baagee/php_QrReader
6 ^, J% a# Z3 [( X/ q% G
+ G6 J6 r! o* m4 _' b3 g0 Z1 v
  1. 9 @- k0 X: ~* D
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    % x  N& u. u* `

  3. 4 |3 X& ~/ V& b! t" M' ~' H6 ~* Y
  4. $text = $qrcode->text(); //返回识别后的文本6 i" ?( O  h3 M6 f( z* d

  5. 8 c3 s+ g0 Z9 e/ p/ J) K
  6. echo $text;7 Q4 M# t/ V. q6 G* C

  7. $ d$ h4 w: R9 R' p# G3 m; N" ^

  8. $ e& H9 K5 H6 l3 B; P, s
复制代码
9 r9 R; P, [2 R5 A
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
/ Q/ t* x' e9 r" Z
- R/ D$ j$ E  G
9 y, J! ^" m/ H& h2 [/ N* z  L: [. w& q8 |7 c

. D  t$ S/ H  B4 r% x$ S8 U
* B) p/ I) q+ j6 `- l# p7 b/ d
# \8 d# Y* d" R4 J) p* K- E6 c6 x# [

1 z0 S- T5 n* v9 d
( X0 Z: D: j/ F. a8 h3 W0 S; E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:18 , Processed in 0.119194 second(s), 22 queries .

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