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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。4 k1 Y; m" b6 U
---------------------------------------------------------------------------------------------------
" D9 I* J/ E) V  D二维码的分类' l, p: x; p7 B: y$ s( q, c  F
线性堆叠式二维码( x3 I8 e$ S4 w! f  L# }% A
# F* R1 z" l: J# ?
矩阵式二维码
- j1 N, _: s/ [8 E2 N2 Q/ x" ?0 O# Z- ^/ z/ J( O8 |
二维码的优缺点/ f5 w1 O) q' P9 A
优点5 Z, }5 H4 }, R
信息容量大
) ^5 o1 S+ ]- O  r7 j( }5 E" T) x8 \- E, b- y
编码范围广  U6 i- D' d: y. f( F1 ]
/ N" Z# N9 ^* o  V7 n
容错能力强7 R3 u0 w- r3 J2 `) @$ v

4 z6 W7 J9 u8 }5 t- i8 z译码可靠性高/ T* s- B4 L5 y  _7 H' E

$ \: U& f% t/ z' v! d可引入加密措施0 Y# D, ~9 C2 l+ _& g7 o9 d

/ I  V: P/ x* o4 }, Q* n) k成本低,易制作+ W0 q+ a' r9 o4 Y
: j/ h* t* i: K9 f( M! \8 z
缺点4 P. X& V2 Y/ f
二维码技术成为手机病毒、钓鱼网站传播的新渠道
; }8 A2 v  q& Q( F* W& G
4 F  }+ ?" W' ^! G8 R8 f信息泄密% h7 R# u  @. S
! r, E% H9 S. R
目前流行的三大国际标准  B2 ^* H7 u2 R3 Y5 k
PDF417:不支持中文5 m" C0 |, b" ]9 b

7 I+ c7 z+ d; e2 N. ~DM:专利未公开,需支付专利费用
0 r7 k5 N8 b9 [! E' E
" Z% o% X2 E. a: `) }' z3 u  pQR CODE:专利公开,支持中文$ s: d* M$ d5 h& [# B

: y  s6 E+ H1 QQR CODE 纠错能力! T9 h) Z5 p& a) {  |% ~) h
L级:约可纠错7%的数据码字
6 i# Y, e( Z( X0 J4 r. {  i  H
& E6 i& u- {) U& J3 ]7 U' W' e# o( {/ JM级:约可纠错15%的数据码字6 g0 w0 C; ~' T; ^$ `8 e
5 |0 y2 k% R" X, ?+ a
Q级:约可纠错25%的数据码字
+ ^0 S) {' W8 ]( E1 ~! A- x
5 p- |1 H' f+ @8 e1 O$ T% eH级:约可纠错30%的数据码字
5 y$ E1 C0 ~/ ^; t6 R$ F) D0 X6 _7 m8 V# t
% T# D5 p* t- \; s' O前提条件% r8 M! n  _( g" l
GD库* {. e  K0 |. J' S. {6 [; `: s

7 y) r) W" C5 L6 w9 u% G7 F' v一、PHP生成QR CODE0 t$ y" v* A& U* h' c6 G
官网:http://phpqrcode.sourceforge.net/
; H$ X, n* ~  I4 a$ G5 a4 s' F. p
下载源码:https://github.com/endroid/qr-code  G% n8 G+ g8 l5 z0 q3 u
/ b7 k+ \  K  q* ]6 R- ?
目录结构
( L- m4 Z& J6 @- V9 s1 m! g" } % `9 M' X3 d9 r7 ~
! f6 c! y2 A& S6 }) \
1、qrcode_create.php( n, m8 H7 P- o& k6 P
ps:生成普通二维码
% g( e4 o* A! H( O
  1. 8 c, |3 ?! k0 Q5 C7 F
  2. include_once "./qrcode/phpqrcode.php";/**" k( A) U: `! H# w  Y
  3.   C# y" e/ K# [7 N( T- _# v
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    6 e# }1 c, w" f  p7 k7 `7 v; V

  5. ) w( g. m: ^* \& J0 D+ |0 m! S
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 `5 o6 J$ E& Z: q) b/ v9 Y5 I$ ?

  7. 3 J1 K2 d6 C4 l8 m+ `
  8. */QRcode::png("abc");
    ' T- \& _2 _- O; J, \
  9. ! q/ f& f5 `$ s" H7 j8 f
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**8 {, s. O5 B4 I0 g8 n: _
  11. : m4 ?7 T; w# Y" C+ s
  12. * 生成文件到本地
    ) O" _" X' U7 g/ K3 n5 k, O" B$ X
  13. ) A  E2 Z9 ?8 d, q7 ?
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)! W% l: Z( F# i( x3 y0 j
  15. $ o2 I' ]3 e; j( y$ k9 |5 Z* r
  16. * PS:$saveandprint源码的p6参数做了修改
    8 u  l$ A1 @3 H7 K

  17. . }! h+ t9 |7 R- {% h& i, y, \) F
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    ! r2 g! O, D9 ~

  19. 9 m! W! |% T( X
  20. 5 X6 n' ?$ R9 R1 e8 z( S
复制代码

6 K, c2 U: V1 O6 m+ K6 L) A2、qrcode_logo.php  Q+ [* t: X- R$ v; p# e
ps:生成带Logo的二维码
  1. ' W# A6 ^( Z' y$ @
  2. /**
    , j; i5 e) D3 J- {; b7 c0 @

  3. , j7 a: w* a7 s
  4. * Created by PhpStorm.
    % X3 K  r& ^3 O, t* u2 j

  5. + A5 g  A. _7 `3 m  v
  6. * User: user
    0 A( y: b, l! C

  7. & I2 S' H7 j% k6 ]: b
  8. * Date: 2018/8/16
    7 I& i- z8 B, r2 A" ]6 y
  9. $ c3 s8 g" a( Q. N* O
  10. * Time: 10:43& m. b6 {* X% [5 w
  11. 0 n/ L0 M. |- ^5 A, _) d" g6 }
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";8 q) b3 Z( u1 x) s4 s, Y/ D$ z

  13. + U: E) g3 l5 G" M* M  p
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称- `, Z9 i  Q4 u7 V, n) p- h) T

  15. " U/ O3 W! U1 r7 M) C% [+ H
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是) z+ S5 }5 Z& X, I

  17. & F6 p( `9 `* ?8 b9 s/ S
  18. $margin = 2;//边距% m7 k( r3 \: J% ~* [+ g

  19. 2 f6 J, ?1 m. }+ j* U; V
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    * ~4 x1 g, a3 J$ m: r

  21. . D( ~# ?9 c' w+ t) M, k
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    1 F0 A9 C  K6 v. g- }% p9 l6 B/ D+ P
  23. ) i  a' m$ c7 [: ^$ U. h( \
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    7 T# C& K; \6 R9 c9 m% S

  25. , q2 {* V1 r7 Y5 s4 _+ Y* H
  26.     $Logo = './pic/logo.png';   
    " v: \: L. g' M% m) q

  27. $ K* ]3 v& c& e6 A
  28.     $Logo_re = './pic/test_logo.png';   
    , `8 i8 Y' Y$ W& [" Z5 f( ]
  29. * J! |5 {  B: |4 f. s- y& v. q1 `
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    " s( b# V; J, a/ q( L. w/ \

  31. + [' _0 T) O2 Z& m% `
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ' Y& p' e  c) h9 f) L
  33. - }3 w4 L+ x8 N  z
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    4 C/ v3 @5 O$ d
  35. $ P5 D% X) _& t
  36.     $QR_height = imagesy($QR); //二维码图片高度
    ) }6 n: U; v  X9 A5 l( Y' Z- \
  37. % N' {9 S$ w, G7 |- |7 `
  38.     $logo_width = imagesx($Logo); //logo图片宽度% k, Z: I( g( e& }5 S
  39. : K- b& {8 T5 ]$ N" Z5 {
  40.     $logo_height = imagesy($Logo); //logo图片高度
    " x  Z, E9 Z) V. ^( q  W3 N4 \
  41. + ^3 d% s# T. O; A! F
  42.     $logo_qr_width = $QR_width / 5;   . Y, Q2 ]8 `8 B% E4 l

  43. & P0 B, c+ Y/ M/ w, u% s' I! v
  44.     $scale = $logo_width / $logo_qr_width;   6 O5 J- o1 }) W& {
  45. : T3 x  M# u/ r7 e# T8 Z$ O
  46.     $logo_qr_height = $logo_height / $scale;   2 G+ X6 i: N7 g2 J% s2 p6 W
  47. ' \3 j% G6 l+ H) n+ s
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;  V( Z9 v  r, v( ]  z  B6 X5 P

  49. ! B/ e! ^8 |) g( U: Q+ A+ V
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    0 w$ e5 d# j0 g1 L% T- s7 _
  51. ! Q% g5 H$ N  v
  52.     //输出图片! v( {; Q5 O& j% x: p
  53. ; l! g$ S1 I& J0 x9 X
  54.     imagepng($QR, $Logo_re);
    " w7 v. M* Z( D0 _

  55.   |3 s2 V/ W, ^, Z& h2 s. f
  56. }
    / d1 ~, f+ K. y- g& g3 F7 u

  57. + W+ U1 |* |& C7 N  [- X3 d7 s
  58. 9 v( r; z, a# A/ r5 z5 n" J$ R
复制代码
3、qrcode_vcard.php (生成电子签名)
3 `; ?& T% t- q, f  k5 Y! u9 j+ U
vCard格式:https://zh.wikipedia.org/wiki/VCard3 W% g# c( ^" H: Z1 q  b( ]& o4 A

( ]7 W+ k, Z5 b6 s# \# Z" C6 F
  1. 1 p7 R  E8 Z3 g$ M5 r" r
  2. * Created by PhpStorm.% ^+ O) g( L! y% e7 [3 O8 @
  3. 0 B2 k6 Q: U( b  s4 }2 z4 o
  4. * User: user
    ! Q- k7 v* Y- t* u0 E

  5.   b" c6 _9 y% o8 G8 I' J  c
  6. * Date: 2018/8/15
    ; T" m  I  M* }6 D: e; H3 O# L
  7. ' {2 N" |) {8 E0 f% H1 c7 ^  _5 c
  8. * Time: 23:00
    ' l" c. h% j: K2 A/ P' C" s
  9. 2 V' C7 v: M1 L+ i$ u# v9 B! T
  10. */require_once "./qrcode/phpqrcode.php";/**
    9 x# d- A! |4 \3 }; ]

  11. . j: H6 m4 W8 p/ Z
  12. * 生成电子签名: W! v& J6 E% j/ u5 w6 P

  13. ( v; o1 z8 n  S4 P: Y3 v
  14. * PS;使用微信扫描二维码; X8 g1 h" S6 l; `- w& N

  15. ! c8 Z# }0 ?  C: r- u/ ?
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
      m. L, y+ c& F, Z. T" V
  17. 3 x. A6 s' g, \9 B! }
  18. $content .= 'VERSION:2.1' . "\n";//当前版本  J" D; o" m) S% j8 Q2 R0 C

  19. ' c6 r- ^4 N6 j& H
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名1 n- [6 S) U5 k
  21. 5 m9 ^: n) x& Z& T
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    / d5 @7 |+ c; O6 B
  23. : u' R4 B. r& B6 w  b" j. l& e4 d
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位& [/ v& p8 P/ w
  25. 3 C) E" C1 V: {
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    2 g8 I' N* g0 E& F/ g
  27.   r% Y0 t/ S; t9 n
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 z! E" W$ S0 J  i) |0 r% w

  29. 5 b' o3 h# ]$ ]9 j2 H
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    " K- H) \* @& C4 }+ g
  31. 8 Y  _/ r  i2 s; }( p. E
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话: R  I" y- ^5 s" ?$ k3 g+ B+ U* N/ K
  33. 7 i; c# K: D3 z
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    6 J( ~/ U/ q- a6 K7 n+ J
  35. / E. K1 x9 e1 u( ^; P
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页+ Y( @6 S( E! E8 A6 d6 C

  37. $ M7 W, Z! E; v
  38. $content .= 'END:VCARD' . "\n";//结束标志  ]7 {3 G; r/ L

  39. ! x5 J& Z# A# r2 }8 ~( ~0 `& D! i
  40. QRcode::png($content);8 d" B) N% g) ]9 y
  41. / i  ?: f9 t3 U6 w
  42. + I" F) [$ X4 `6 n6 u
复制代码

  }! O4 E! b) @  ~+ K1 }, [相关文章推荐:
* E0 u8 d; j" R! i( G1.PHP生成微信二维码实例
: Y" R9 k- X/ h, T' d2.php网址转换生成二维码, R( @; R* U% y; g' Q
相关视频推荐:
- q4 ]0 l1 L$ L0 ^1.独孤九贱(4)_PHP视频教程+ \6 n) x, H# {9 }0 @8 z
二、JQUERY生成QR CODE1 r( x8 l; ?% X
源码地址:https://github.com/jeromeetienne/jquery-qrcode
# r" N% ^: k( J# u% o" ^" ]; b+ C- S4 R  b) `% @' C
jquery_create.php4 c- f$ S/ l& r0 n9 T. c& X

+ S& [  U: J/ e8 \! m9 |) \
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

' r# O' {2 }! \% i# m4 |$ w三、PHP识别二维码; y- T1 n3 T( l7 x4 c- ^
1、方法一" P% g2 h' W( L% r, y2 S
环境需求,安装如下扩展
  J# g- T. m+ V" ]8 C! x  f- ImageMagick
; F0 ?  l* \: ]" G9 v5 @* u! x- zbar# {% @" S# Y0 j; H
- php-zbarcode! S- w! f( W% d# }( z

: M, _0 B: ]2 o2、方法二/ D8 z% d+ ]6 f8 ?: @7 r! r% x- ?
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
3 G, J. q9 v; C& p- V$ ?3 u6 oqrReader类:https://github.com/baagee/php_QrReader
/ h* H& h( b2 Z; S: a: ]9 x# m* M& {! a' X: i0 ^7 X; f

  1. : \! f! W( S! z; z7 U0 Q
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ; L9 Z1 H6 w- g1 x* N# a- ]

  3. - P/ V! W  R( l7 ~+ O
  4. $text = $qrcode->text(); //返回识别后的文本
    6 l, ^* o1 R3 M
  5. & M" ?8 k; x' R0 ^
  6. echo $text;) G7 B) e1 z! z6 v4 X
  7. % Y# G- g. D) A+ A
  8. 9 l* v: x; Q7 S: E" _5 a  a) f8 S
复制代码

# Y! I7 i* n" \4 ?' S- x# K链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7! b$ a) z( {; O: j7 j; T2 q

6 F& u" }" Y/ m! T) ?3 G1 x
/ O% E  ^8 J) F6 K7 U
* o% H. k1 ^: E5 X. J5 f- g; z3 l
9 R5 u+ N; E; L- M" ?$ N
; h) R9 M  e: @5 W8 h/ a# Q. U
& T/ m( g; M% @! R4 T, u+ v2 O& W+ C3 y8 }7 }3 O8 T3 M

  _& N$ t# n  A/ n/ q/ s
& O5 f# e# y: h3 d$ m3 l% X$ m+ ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 00:16 , Processed in 0.065183 second(s), 23 queries .

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