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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
: Z! l3 c$ @  p" {---------------------------------------------------------------------------------------------------
4 K) l9 k9 T$ L$ p二维码的分类( r2 @- f8 A, Z
线性堆叠式二维码$ D" z# b* g% |1 {! l- L2 X- p
$ T$ G* x* Y6 a+ U' P( F
矩阵式二维码4 q6 p% G0 j3 a/ {3 d* i7 `
- I6 u* p( p2 R& @6 @% x9 b; j7 ]) V  k
二维码的优缺点+ x& M! P3 i& K& U. O0 ~) J5 A
优点6 Z: k' C- u* y% ~, R. w
信息容量大
) ~, c; w! e) v6 N5 l! H" N2 M& A- b% e3 L! D! E
编码范围广- t3 h) g( P/ j* k

' R! o: e" J& i, o, t6 U( p容错能力强, \) l* Q  Q4 c
, ]" R- y9 g% h9 f, K- m# L- V" x" k
译码可靠性高  ], ~5 E/ F1 X; T6 X2 M" J3 \" G

" D" K& G- Y6 A' g可引入加密措施
5 @8 }+ D6 o& h
+ f! X+ O/ C& ^  i' ^成本低,易制作
% S9 _. u7 Z" T" U8 J3 J2 X. M9 T. m6 W, R# T/ K1 k
缺点
- X2 V+ F: ^# o7 V$ a+ f二维码技术成为手机病毒、钓鱼网站传播的新渠道, C# y* o( d( _
: L* I9 q$ `9 i+ j; Y- v' D8 a
信息泄密
- f. v2 B8 H8 d/ q$ F, q8 d1 F) z2 X0 V3 @3 p- P3 P, D  @
目前流行的三大国际标准
. Z+ T7 t2 k( l3 b' z# uPDF417:不支持中文
9 o6 [$ m; x8 B) w2 m
9 i6 l1 q. @" [' j8 T" \: c% X4 [DM:专利未公开,需支付专利费用9 w% Y6 V# \. B6 @" z
% t7 D/ X. o8 h6 R9 o
QR CODE:专利公开,支持中文" ]2 Y: j" ~4 O, j% X* S) e, P/ l
4 A3 x4 M( U$ O* V
QR CODE 纠错能力  f4 y" H$ \# H' d* D+ L
L级:约可纠错7%的数据码字. ?& U% X5 `+ K# w, y6 T

; R0 Y& H7 T$ y9 `# H0 q$ L$ FM级:约可纠错15%的数据码字
! w8 R( B8 \/ {$ h& }1 j
2 \& n. D+ X1 Z4 [: M0 v/ zQ级:约可纠错25%的数据码字
/ T/ C) l+ r6 c# o) L; `# l& Y  {! t0 @
H级:约可纠错30%的数据码字
8 o5 b6 `1 X0 _3 `5 r; s: w/ k# A6 u$ Q
前提条件
/ [6 d; [* E0 P9 P; a+ i, mGD库- a: E/ Z2 i! V& r
$ o7 E5 W9 E& p
一、PHP生成QR CODE
& d: f6 s) r5 ?官网:http://phpqrcode.sourceforge.net/
: _1 `! D/ U, u9 B/ S
9 I' O# }' x, H0 [5 N下载源码:https://github.com/endroid/qr-code3 P. ^6 k/ ]+ T- b
1 ]: a$ `% D# ^8 Y
目录结构- ]& j$ Z+ U: j7 G

- Y# V& Y5 Q( E; J) Y, c) E  r" w0 P& w4 X8 P
1、qrcode_create.php
; Q8 J- w3 o; }* j7 @. Dps:生成普通二维码
1 i& U  T2 @/ z$ z, I

  1. 3 d1 q3 F7 @) T- N4 h3 M8 r
  2. include_once "./qrcode/phpqrcode.php";/**
    2 i; z. @3 T9 _* r( v. l( B
  3. ' W8 H/ Y( [! [3 ?- J
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径1 s; b# ?$ c# w0 i

  5. ( k) r: J8 {- e1 o, I& p
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    " R/ `& J6 M: r4 A
  7. " f/ R2 P/ H& A) `4 W
  8. */QRcode::png("abc");$ a7 }2 {1 c- d: q

  9. 0 g( f- d3 M* L$ Y
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**0 u& p0 v9 f3 x" Z
  11. + W& h! [" F. S2 a1 Y; I
  12. * 生成文件到本地4 R0 T0 N6 O* Q$ J

  13. + s. {( T; e# p2 `- A
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    % D; y' {$ t& G' V( E

  15. , T; O+ r. D3 h. j- H
  16. * PS:$saveandprint源码的p6参数做了修改
    6 L) L: ]* |( C% w: y4 v

  17. # `2 z* j# b3 s7 O  O: T
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    8 }2 Q- R" _- f6 i- j% }/ F
  19. 2 H& \+ f" U. o* l
  20. ( A5 y" P( h. Y. h
复制代码
: n% k4 g9 z- {
2、qrcode_logo.php& u; l# u" p" E* r1 Q, Q
ps:生成带Logo的二维码

  1. ! X4 O1 K+ e6 o6 M( N% {: y
  2. /**$ O2 _: n+ ~" A' u8 l
  3. 7 U4 l  B2 ^1 c. v
  4. * Created by PhpStorm.6 D- G5 B6 X; f3 u% V& I; B# i
  5. " {$ K  W9 x/ `+ W3 U
  6. * User: user6 a  u& t$ J" N; s% t5 s0 f: R' c/ k
  7. ) G) y' C; X8 i
  8. * Date: 2018/8/16  U! e- m7 O; K3 S/ y
  9. ; f6 ?1 a6 C) ^# T8 H* u. h4 S4 s! y4 q
  10. * Time: 10:43
    8 A5 o2 r0 n* A4 M/ w/ j* Z
  11. % b& L9 [; Q- v$ i" n1 a9 L
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";* R% u& S& C7 F# Z6 g

  13. % Y& [! b: b: a6 x
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称& C/ ], F# P! n+ [/ {
  15. # n9 r& N7 [# s$ P: V! c
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    4 N! z7 `! m0 L* i/ Z
  17. % T2 U, N' p/ h1 n
  18. $margin = 2;//边距
    ' S( p' D5 k& \& ?' R; d

  19. % s; J9 E7 _9 ]% a! P! d7 v
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    " P4 O* i: ]: R7 W" ^; V$ G

  21. , J$ M0 u1 T5 @/ S, k+ M5 `
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    " ^; X4 B. M9 r& j& _9 w9 s6 h
  23. 3 L3 W1 U+ m0 ]" ~5 ^  ^. f- S- j0 @( v
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    + m. T; c/ v3 s. j5 A8 B) u# ]
  25. 5 k+ }% E1 ]% F' N6 P2 ^. k, {
  26.     $Logo = './pic/logo.png';   
    ! ?8 l. N+ i. ^
  27. + A  b3 ]* A+ e. `9 ]  r& M1 W* f2 N
  28.     $Logo_re = './pic/test_logo.png';   
    ! H" f; h; y' ^3 {5 }9 ^
  29. " k: X( j( d4 y9 U5 u, N, ^
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   2 y7 j/ O3 S7 e, M+ C

  31. - x# K7 U& ~5 O0 a! h. i
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
      G2 O2 D) H5 _
  33. , d* e2 @7 t$ U9 c5 K: q
  34.     $QR_width = imagesx($QR); //二维码图片宽度4 b% \4 b0 o+ N' s6 a- y
  35. 0 K! I2 v( e4 b7 V8 K
  36.     $QR_height = imagesy($QR); //二维码图片高度& \2 s; b  a( I7 L8 ^! F5 M
  37. & Y- p. G1 @9 X
  38.     $logo_width = imagesx($Logo); //logo图片宽度" W0 g) `2 j* M) @. c8 V4 w

  39. ! K: k4 _! J9 M! Z
  40.     $logo_height = imagesy($Logo); //logo图片高度
    / [/ @5 ?& H* \5 a' w8 |

  41. 5 b' _5 B9 J- S
  42.     $logo_qr_width = $QR_width / 5;   - l$ z6 b4 T& Y; u( |' R: h% v
  43. ; v. h" @: q- ?4 K8 Z
  44.     $scale = $logo_width / $logo_qr_width;   
    . j- X& ?# l" r
  45. + |( v4 a2 ~( y. g3 d6 n) z) D4 B
  46.     $logo_qr_height = $logo_height / $scale;   
    . g" L/ H& s0 j6 u# B

  47. . B( Y  ^. F' R: c0 @
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;+ a7 e& A6 D% a2 v
  49. ( Z7 p, r$ {1 N7 ?, T
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   1 u" z" }5 V8 F; z7 p2 z' K. j
  51. 1 m+ V* y& N4 V- h2 y; c
  52.     //输出图片
    ! ~, Z. Z+ B& j. O1 a
  53. $ F2 k" y' P9 t9 i4 I) {) x5 R
  54.     imagepng($QR, $Logo_re);0 M% C: h9 D3 T: S
  55. ) j" |' t- s7 ?) F4 t% C( e
  56. }/ ]. _* n5 d0 D. v+ y7 w
  57. " K# A: |% N( L' s9 G" R, x
  58. 5 o. H9 Q8 w: q" }
复制代码
3、qrcode_vcard.php (生成电子签名)
: T, M! D% E3 K  c& x3 M3 C! t' A; i- c
vCard格式:https://zh.wikipedia.org/wiki/VCard
! K2 Z  A, K9 |9 X! b3 T, y  e' H3 V9 M' @
  1.   V5 f) O' T" [
  2. * Created by PhpStorm.' b8 O8 ^/ m, n  _* D7 ]8 |- \' g, g

  3. # H# j& C" l. _6 a4 _$ B
  4. * User: user
    : v9 E; M5 Q+ R$ \5 n

  5. # n, d# F: N, j9 `/ Y0 w
  6. * Date: 2018/8/15
    1 r& c% n; R$ B- y9 y0 Z; L
  7. 0 m' l* D4 Q- ?% T+ T
  8. * Time: 23:00
    1 H+ U: D1 O* U- x5 L/ ?: W* ~

  9. " q) g& U2 V0 C5 e
  10. */require_once "./qrcode/phpqrcode.php";/**
    0 J1 W4 b6 d+ A8 I
  11. $ n7 _" w0 \1 P# s+ {( Z
  12. * 生成电子签名4 D6 n3 R2 X  K+ O1 ~

  13. $ V% ]( {0 f2 s# l. v% K
  14. * PS;使用微信扫描二维码, p/ H, j" \. q' ?5 H& u: m& k

  15. 3 V2 K, J# J( n! g
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ' O1 y. @8 Z8 ~

  17. . ?$ h4 O9 U& ]
  18. $content .= 'VERSION:2.1' . "\n";//当前版本' i0 D% {$ p/ W/ s0 ]" J* k2 `

  19. , D0 Z) L: K: H% o  Q
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名/ @/ w: {5 t# Y4 d+ t6 Z2 |
  21. 9 z+ ?% i% e; i/ g! {& Z( d
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 g9 K  q  p6 w8 r( s7 [1 T" N
  23. 8 ^# o" p4 X) `& b8 v
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    $ m) r! p3 k5 B
  25. * A7 \+ Y6 R5 _. D
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话; |% n- R: x( C

  27. % U4 p0 m6 }( H0 S, [
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    % W7 M4 ], H( G4 ^) L
  29. 6 o% ^9 C' J) [
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)9 N2 S1 W0 ?# O

  31. 5 f: D- i6 F6 @0 N6 q
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话# i! X( h' @4 M9 |( |* w

  33. + H2 U$ H1 S+ A* J
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    7 \4 w3 h, o5 G" k6 R0 I9 m9 Y
  35. 9 P% \; c' g1 f4 t, l3 W
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页# j- Z5 v. x4 D" e6 a
  37. 6 g* y$ C- W' V: n7 v% Y6 H1 |
  38. $content .= 'END:VCARD' . "\n";//结束标志
    6 [9 H' q: e$ y, A
  39. : o$ u4 H; t' z* C$ a& x
  40. QRcode::png($content);
    , B7 s% P, `# g/ R

  41. . g" M: r/ B: }" B2 m. i
  42. 2 N) z  [8 x( F1 n
复制代码
3 ^% _2 L8 X$ w+ h* e" C9 p; q/ H8 V
相关文章推荐:
, L  c3 f0 q. h- R& C+ u3 G1.PHP生成微信二维码实例$ a$ y" e+ e9 n8 v  Z% L6 ?
2.php网址转换生成二维码$ x2 e9 U  X% Y
相关视频推荐:- }2 n6 h) t3 F  ]
1.独孤九贱(4)_PHP视频教程
9 a  ~( A, Z) k6 K二、JQUERY生成QR CODE
7 M+ w; O+ I  w源码地址:https://github.com/jeromeetienne/jquery-qrcode9 O  `  O4 c# X2 s+ c# q

# x' V  q& d6 Q  _( f* [jquery_create.php" Y: `6 Y0 J: t

0 ]! |( l$ y& t% ?% m5 ?& A
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
- I1 \7 Z) t, P) |2 a4 d
三、PHP识别二维码
4 m' }( v6 I  n( Y8 u1、方法一& u4 M4 p: r: x$ \& \8 `& u
环境需求,安装如下扩展
4 P; w$ N) S) k# r4 b" G* }- ImageMagick
  n4 ~; n" }9 [# h; t/ q) a$ O- zbar
$ [4 |0 R7 [# P; o5 N) \- g- php-zbarcode7 c! f5 w' E9 b; D

2 k% Y. M8 S  x! I0 d' P9 c2、方法二" R/ @$ ~. c2 A6 A6 h" [0 _
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
" \: w4 P; h2 j+ M8 M6 ~qrReader类:https://github.com/baagee/php_QrReader
5 m3 W: W  X; x2 a$ V6 k& d. p% h0 y  J& S& k# M

  1. & y, N1 b! v+ J2 ^$ R; }
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径9 A7 R: J6 K% o( e

  3.   S3 t& y/ [' E, L4 F" A% N
  4. $text = $qrcode->text(); //返回识别后的文本
    $ X- V* X& `1 L: b4 N( t

  5. 1 d+ p) e3 I# j2 m9 c2 J% h
  6. echo $text;8 F1 r$ W+ Q9 t

  7. 7 Q  ?9 E$ F# p: ^0 `5 B1 f! T
  8. ) Q8 j2 h  i4 d6 B. R$ h
复制代码

' y) F9 O; W; p链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7! s3 p/ Z1 h* F  P

; g# S. H* W& Y' U. ~  E6 E/ r  y. R* D. Z7 {- S3 ^- p

3 b& e4 I1 y. c% R. S# a
+ \* x! S$ j; s. E1 C# j+ z: G* U9 C, C

. f. |7 j5 y, [' u8 G0 Z; K: Z  U# s: W" {) x. h4 H" x

. r. d) y' l# G$ X
2 w$ M: E" |1 z0 y9 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 16:10 , Processed in 0.066012 second(s), 23 queries .

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