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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
4 ^2 I$ J3 V! t, k* e; u1 j---------------------------------------------------------------------------------------------------
! K" r& n$ e7 Q; Y" u- O二维码的分类
0 `, @/ Q. g2 x+ X" G线性堆叠式二维码4 w3 p5 c$ A0 l

# B3 O! u4 b4 z: T/ \矩阵式二维码' [$ t0 p, {; e
8 g* x8 M/ a- x  _2 S
二维码的优缺点8 J& O4 p2 P% q5 e
优点
; _  Y, ~# I2 U" H9 ]2 q/ e0 B2 k信息容量大
2 F5 n- y' e5 m7 Q! I1 M# D& R  Q: `/ j- V$ W9 C- M
编码范围广, E1 Z' ^$ m" K
6 J1 o% x: [0 ?. ]
容错能力强! |" i. _2 l1 L, f/ p, w4 e
9 O# `& i  N3 |- E8 W# ]0 k' i) r
译码可靠性高1 w" v% H- ]5 F( f% L
+ j- W" ?+ g" K
可引入加密措施
  k- X, ^" W3 F' Q' k8 t& k6 y0 \: }, ~
成本低,易制作
8 i, f, |) s, r& H0 }# ?; W, W7 x5 s6 V$ S
缺点8 k& g5 a7 h7 a+ T
二维码技术成为手机病毒、钓鱼网站传播的新渠道
* U: g" ]' }: x: P
7 e6 |' V4 z' J+ {; c信息泄密7 X, x1 [( [9 k) s! i

2 q6 |0 G6 d! B, W: c目前流行的三大国际标准& J) I: a. o0 p$ i, f5 r
PDF417:不支持中文' Q" S+ a, _9 @2 s5 R' u) Z6 p" B

7 n' f. l% T5 B( t( |- G' Q! b: eDM:专利未公开,需支付专利费用
  n/ T4 y! Q8 ^1 G  m2 e* J- M2 {1 N
QR CODE:专利公开,支持中文% J" F) l  e' i: I0 h+ a
- \! U" z& @5 ~9 W
QR CODE 纠错能力
2 B! B9 F5 N' h8 r) }& N( @6 FL级:约可纠错7%的数据码字' N6 `! _) z* @6 y
+ }. e3 a7 {# d, I1 V% A' j$ h
M级:约可纠错15%的数据码字- D; f) H; V# D# U' x3 P
# p. i8 A6 d- _9 ^1 q* a' D
Q级:约可纠错25%的数据码字
' y; J6 {/ h6 U' ^! z% e" y+ f1 U- m( h$ T
H级:约可纠错30%的数据码字
$ b! R4 n# A1 C: ~8 u3 Q% W  D6 M& j& ~# X3 ~
前提条件, p* y! |; n4 D+ D& @4 x
GD库
  \( W, u6 P; N& W( @$ y' M
, N( n1 J6 a6 e3 v1 r一、PHP生成QR CODE2 x; k8 l  ~3 f) c
官网:http://phpqrcode.sourceforge.net/8 k  \. \5 _3 L/ U/ U0 q
  H- H( e: r" N; P4 v" W
下载源码:https://github.com/endroid/qr-code
% ?6 U0 f. \/ V9 k; F
2 d, |( R2 I# E; O( ?3 |1 q目录结构  W8 }4 A: f/ S! M0 s

) L% s* h! d& d8 C0 O' v( m2 {: u$ c: ]0 v- C( g5 ~- {5 s
1、qrcode_create.php
5 ~  _+ F# s/ f0 c6 Cps:生成普通二维码
" O4 b' {( D+ C6 S' v

  1. ! M, f& b9 D, Q& H
  2. include_once "./qrcode/phpqrcode.php";/**
    $ N  S. a! C$ X( S) S9 ?! J
  3. - i! v6 l* @+ `) T! Z
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    2 s. U0 b) R# l& i

  5. 7 Z/ ?) \9 Y6 h! z; _
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ! I0 u1 Q1 {" W9 k+ O/ L5 a
  7. # B% k8 j" {- @0 n5 o
  8. */QRcode::png("abc");
    , D) E5 w, D( Z6 u
  9. ) g( Y" c% _) w  i8 S
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    5 z0 o8 [, n6 h7 b: K% f
  11. ' d/ c) M" Z) C8 ?7 r
  12. * 生成文件到本地
    / V  O7 a; t& W0 F
  13. ) C1 X) U# F3 `: l: ~  ]+ ^) r! e
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印): U% {7 k: N- P9 A
  15. + l. u: {$ b! u6 y* U7 d% Q  X  V
  16. * PS:$saveandprint源码的p6参数做了修改
    / N6 k* E: M4 K" M" l8 E* o

  17. ! n6 ?1 K5 `2 A1 J- P& A6 U) D% ~
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);6 w9 Z1 c9 _0 n
  19. + v7 n3 k/ z9 Z% w
  20. 6 Y1 y+ u$ U& A
复制代码
2 \- |9 C& _& t) T& J2 Z, B
2、qrcode_logo.php
8 h" ?0 S5 g- g- W0 ops:生成带Logo的二维码

  1. 2 h6 V( W/ R  Z- _" s) O" l
  2. /**, P/ C8 T5 K7 g/ z  \# O  b  F! }
  3. % v/ T1 [) n) B/ x, \! }' W
  4. * Created by PhpStorm.
    $ H. |: W% v7 u

  5. 7 G* J# e" P  u3 w7 h" K
  6. * User: user2 f5 K# Q: N0 W5 ]7 W# y# n! \

  7. $ G3 D. |+ g" g. T0 }9 y
  8. * Date: 2018/8/16
    % i  j4 n% x( |- `. P, C; w/ `
  9. ; q' L4 s1 ^9 e3 d, a
  10. * Time: 10:43# P1 W3 O* i- ~" C8 y" Z3 x6 `4 i- t

  11. " m  j, l. l$ h5 p. ~. I
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";6 C7 l$ d3 X3 v: t% i
  13. " d4 G  r0 i- m8 Q- w
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    / e8 h% ?2 V0 Y% R
  15.   n! h2 a: u* o
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    3 P" H- b) v9 j5 O
  17. ) x/ `* q9 x( V3 S8 c: N# `' s
  18. $margin = 2;//边距
    3 t- K/ |, j- R) H9 A
  19. 1 Z4 s4 Q; w1 K% g0 l5 z" g. o( o7 s
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    % n5 H* `! o8 Q- x7 @+ y
  21. 3 X2 S" _5 N% W0 W7 b( g+ V; Z, x& U
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    + z  P; b4 j. @5 R
  23. 4 A, N9 Q) w3 R/ H  v* n# m6 \
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    # ]0 z, s2 r3 N$ H7 x- D

  25. ! s, O/ d& n! \
  26.     $Logo = './pic/logo.png';   
    % L# W  d! |" n7 F
  27. & e5 i; N# _1 w! H# ]0 W
  28.     $Logo_re = './pic/test_logo.png';   
      T1 g5 L& D% t0 B+ v
  29. + n; V5 d2 h2 f( p8 g% L0 d5 b
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    1 X% t, g) J2 c3 }( M6 s7 V
  31. 2 e2 K3 y" _6 v! V/ c- i) b) v  a
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    % R' F8 J, M1 P, g

  33. 2 o: U: J  @2 Z  n7 J
  34.     $QR_width = imagesx($QR); //二维码图片宽度
      X4 a2 k6 O/ F* U* L

  35. % @$ e1 q/ u! j# l! G: U
  36.     $QR_height = imagesy($QR); //二维码图片高度1 C, Y$ z3 k0 v8 M9 k

  37. 7 ?6 H* i( v5 d& x/ l8 x" g# J- [
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    2 w$ P5 n# O( t& n  @% M9 p

  39. . B# k. K# G# C
  40.     $logo_height = imagesy($Logo); //logo图片高度  a3 V5 H, O8 ]. r
  41. ) j  F* x  o% c8 t6 T/ p
  42.     $logo_qr_width = $QR_width / 5;   
    $ d% K' b0 s( W4 E& ~) R

  43. " K" E, T3 @- }2 r- e, L( j
  44.     $scale = $logo_width / $logo_qr_width;   . P% {8 U  V- J  n

  45.   |" ~$ `/ H( d: @$ z. @- e
  46.     $logo_qr_height = $logo_height / $scale;   5 L& B, M; L% ~4 d4 N0 g, B1 K

  47. 6 d- Y4 f. u$ Q1 y/ k( [6 o- r! F- y
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;6 l9 v5 o$ ]8 m( B' N1 N
  49. * s& p  ~) k* K2 K
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   5 G) a; I  x9 `9 @

  51. ; l3 u" @6 n( P) Q  [& l# t
  52.     //输出图片
    % W3 W: ?9 t& G" D6 _% ?
  53. / H! h( G2 ?3 K8 k  F. Q3 d; m! U: d
  54.     imagepng($QR, $Logo_re);
    - N, a/ h5 o. d7 L! g/ {
  55. ' Y. p+ K5 t& V* w. @
  56. }1 ~# x# T2 ]+ F$ W/ x
  57. " R  Y( f" P$ ?

  58. * {: |1 {' P& c" k  {0 P8 J
复制代码
3、qrcode_vcard.php (生成电子签名): W/ s  A4 S  S; C, }

* x- \$ W$ i2 |# t$ O; r2 SvCard格式:https://zh.wikipedia.org/wiki/VCard
. ^2 b! G! ]) w. J4 x2 |
' [; C, R; \4 @# _9 J+ f

  1. * @( t" V3 i' g' P  N
  2. * Created by PhpStorm.
    1 q: Z% w5 S# |9 O+ o

  3. ! g/ Z" X2 h" _  N4 w
  4. * User: user
    ( k- I3 e; ^2 g5 M& E
  5. % H* X0 L9 r3 N* S0 K0 y& f' e
  6. * Date: 2018/8/15
    3 o2 ?4 N: Y, H. U. H0 n
  7. ! `/ f/ A4 E- U( G
  8. * Time: 23:00/ n) o2 y/ R1 j+ O4 w

  9. # U) L% c6 \0 E7 a
  10. */require_once "./qrcode/phpqrcode.php";/**1 }. h' V& a8 |" u1 ^3 R5 h

  11. & {' Y; c1 J3 V7 ?) n
  12. * 生成电子签名/ c! e7 U0 s$ X5 @! s$ L

  13. * Q" P- ^2 d$ W! O  C3 |+ w/ m
  14. * PS;使用微信扫描二维码
    9 s  i' A* h  s

  15. , L# g5 D7 U0 o) h) f; Q5 N1 Z
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志2 g) F! W7 M: N" L. s
  17. 0 q8 `( c/ W% T3 h" m" Y
  18. $content .= 'VERSION:2.1' . "\n";//当前版本4 O- P' M9 ^& {" F. M' o

  19. & W/ M+ E- N4 `1 e/ ?& l! }& E( F
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名6 ^/ q" Y; i; q# m1 F" n$ {
  21. ' L# I& z' I* D/ g, ~, W% c
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ! w+ C9 B( d" W: l
  23. 0 u; K( L$ B2 S1 q& T$ x
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位2 L9 U6 `9 j3 k4 P/ A

  25. ( `% m$ I4 _. m8 Z! J) `" p
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话6 J& h; \( Y0 X) E

  27. * q7 D  Q8 w& @6 A! A
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址+ Q- Q* ^; }/ Y5 R

  29. 9 X( L$ H* A4 {7 L5 _  Q3 A$ `
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    - g2 \+ g2 Z8 }) c/ U! l& D

  31. 0 M! ?- Z- n% S. x- J
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 n' |3 T* \: }; o" m
  33. ( ], d4 b7 P+ I* M* t
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱3 u7 a7 G5 y8 g; J+ `. w9 B. J
  35. ) g- J& C, D2 m" k) V
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页$ n4 s: j* Y  G+ m- [
  37. 4 }; b$ ~. s3 {! t$ u5 L
  38. $content .= 'END:VCARD' . "\n";//结束标志) q9 E+ d2 V! X6 F. o# z; Z; s/ b

  39. ) @6 c: Q* F. V& T4 K0 Y  P
  40. QRcode::png($content);
    - {0 U$ ]; n! L9 K/ T" {* S9 Y  A! b
  41. ' j( T+ f7 _. k* `
  42. 9 V" \* I) ~4 S* X0 a
复制代码
" d$ D4 u* i7 B1 n7 H
相关文章推荐:
, W2 N9 O, h5 p0 H9 V1.PHP生成微信二维码实例
* U+ A: G- m% S+ Z7 V; ^1 ^4 O2.php网址转换生成二维码+ M; u/ R6 [9 v4 k$ w) j
相关视频推荐:) T% X/ A1 l: k
1.独孤九贱(4)_PHP视频教程
& y  `1 ?3 G; O- Z  @二、JQUERY生成QR CODE& g$ {9 e* ?8 V* g+ G3 f
源码地址:https://github.com/jeromeetienne/jquery-qrcode
6 b$ ^4 @. r- I* j' M4 I2 o6 [' @% p5 D5 N( q
jquery_create.php
+ l9 k1 r; h; |# A$ B7 c. G8 l; T, Z  Z6 B* C- s: [+ @+ G
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

) x& J: q" L( m& a& }' C三、PHP识别二维码
) X- x  e8 J* ~+ ?  o1、方法一
( @, E+ Y% M* e环境需求,安装如下扩展
1 \& W5 T% r1 I4 h, |( v- ImageMagick
2 t( q; H$ F  c4 s. y7 f+ Q- zbar
2 b4 K) V2 K( D- php-zbarcode* V1 r7 A1 M8 e
9 I: U3 J3 u2 f) c9 ]! Q& V4 p5 I
2、方法二
. E! J7 r4 u+ O' H! \8 EPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) [4 o+ n2 `* D2 n% YqrReader类:https://github.com/baagee/php_QrReader  }* ]7 e, f$ s& \

- F8 z( w: H2 L- j
  1. 5 T6 J. O/ V- M% }1 K9 I
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ) R, I3 t4 ?7 p5 y
  3. $ [* G; z# F5 l2 s+ t. [
  4. $text = $qrcode->text(); //返回识别后的文本) k- |# C/ T- g( \: |" H" S2 X
  5. * u6 J7 k* H! o% Q; y
  6. echo $text;( @  D4 `. l3 ^0 O

  7. . `( A9 o: N4 {
  8. & h- \! Q) X9 D! {
复制代码
+ e0 T3 Q% P7 Q, V  }3 l) a
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
$ `" X7 m. N( `% u% d, Y; q/ g9 D
4 D) x) |; c$ Q: v* z, p; n
; L* ~" n* t' ~2 M. l

7 \8 K, I( X8 ]' b7 g$ z( S9 A" w2 @4 r$ q3 P" [! C7 s

* z, W5 _+ I. |  F+ a6 B* e% J
) a! Z6 G! Q$ z5 }' w. J' e2 ]
& T2 j- @- h, ^5 I. i. f! C% g) d3 g  n# c8 X5 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 02:06 , Processed in 0.057607 second(s), 22 queries .

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