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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
0 g8 c% a. x( V) |. y---------------------------------------------------------------------------------------------------# j! h& h: A; T. c6 S
二维码的分类
; V. J; X9 }$ g) a6 O线性堆叠式二维码- Z/ [6 f7 `/ J$ K* W! e3 K$ D

. [& O1 E! ]4 R8 A, c& n矩阵式二维码
, y5 @+ C( s% B& q! E
3 E8 k$ l& _, y2 h# s二维码的优缺点
' x5 Z& K: R  a7 B1 E- B优点# O- y' P; w+ Y* \
信息容量大
; p1 E" G( S: F3 K  U4 z6 c3 Y& r% h* V: X2 ]5 K. K
编码范围广
+ q$ E- N  g# j( a& v% C, }
3 A6 L. I0 l! d5 F9 q- L容错能力强
: S! S: c8 Q& C3 W+ M3 K% h$ {
7 |0 j$ `( N: Y1 B2 W9 V译码可靠性高  p& @3 v+ L; E. b
& a4 v$ e. g7 d7 C
可引入加密措施/ G% M) d/ f1 H! x* }) I

0 h& \4 r# Z* J7 v+ Z" U* L: F成本低,易制作+ \$ Q/ V9 ~' p# U( n

; U5 ^4 ?$ r9 [. s& v$ D缺点6 J4 ]+ p0 ?7 [* u5 k# Z
二维码技术成为手机病毒、钓鱼网站传播的新渠道
) R% X. ?& c2 T9 D/ v5 B1 _
) j9 f1 T7 u7 N信息泄密4 g' E/ P: i% p% v9 t6 a

2 P/ `% H1 R. ~目前流行的三大国际标准
! [4 n8 S" T! Z5 R& |PDF417:不支持中文9 a& J9 |0 ?0 ?

* m- C, A& [: ^& N" Y! z: ]DM:专利未公开,需支付专利费用8 ?" z0 G; `7 `: {! i' [, C
- D. o; [- E8 X, a9 E. `
QR CODE:专利公开,支持中文
8 N! |- c; K- n5 P* {$ ]1 y. Z" v6 f5 `6 V/ Y: B
QR CODE 纠错能力0 N$ V, d" o, y% _
L级:约可纠错7%的数据码字
, ~' x8 s8 {9 P, ]5 c8 R3 D# u% K
M级:约可纠错15%的数据码字2 w. q/ U- [  ^9 g- H

. r; \, |( y4 o6 _' ?Q级:约可纠错25%的数据码字% c/ K# X" j% u8 ^  R& j! E$ ~

- F& Z. k. B: P; x- mH级:约可纠错30%的数据码字
. n3 _0 U% P% q6 W+ g, X9 g- L1 q6 T
前提条件" n9 C4 F7 e" j  ?( Z- `3 `
GD库
! s* u: |, ], I1 H
3 a. K: E# \! g) i一、PHP生成QR CODE
  o: H2 O. D. l, w) I  h' j% Z1 c官网:http://phpqrcode.sourceforge.net/
' W$ n  p, ^) p; w+ l/ E. I7 R, G) C- E* ?7 \; Q0 C
下载源码:https://github.com/endroid/qr-code
2 {. R) R: F' k0 h( R( r# y7 L# @( {6 V8 n: P
目录结构
. m' F, S  v. H& l) K + K. c" c( _1 Z4 E2 f
! ^2 m$ F8 {" F) n8 X; I& H7 _
1、qrcode_create.php
& I+ }& N% q( R1 {7 P6 w; l" @ps:生成普通二维码+ e/ U1 u" i! i

  1. ; z2 a0 e2 a3 ?. x7 P$ e
  2. include_once "./qrcode/phpqrcode.php";/**
    ) z1 z7 s1 l- }2 y( m1 B  T* ?
  3. % g) Q2 y1 n% ~9 C$ n( f9 |, T8 `
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    $ [& K9 E6 r/ h- Z$ R, w3 p$ u3 O

  5. 5 X, I9 m3 ?1 }: O- f* O
  6. * 在浏览器上直接生成一个二维码(内容为abc)5 F# s1 b% M- Z+ B6 ^
  7. 5 T5 z( ~4 K7 H8 L% }( z* M* Y
  8. */QRcode::png("abc");
    # ]) e* ?, b( X4 S0 f! b* b
  9. # v3 i- C3 ~  `( e2 l4 y/ P& K
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    ' H7 x% @9 v4 R% J5 c8 h- Z1 X3 N2 N

  11. 2 g+ t8 g: P" ]' \+ z+ F+ A
  12. * 生成文件到本地8 K1 y8 T# f% m: A0 e
  13. + e7 b' \" B: U) [% d
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ! H' E3 d* u+ r  g8 R

  15. - ~! f4 z% v* S2 ]1 G
  16. * PS:$saveandprint源码的p6参数做了修改3 N: K9 M/ c* P# r+ b
  17. ; Z( i0 n9 _( w- u" R! |
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);) w$ y  G- ^4 E" L; A

  19. : A  N2 h( p& ~% f/ @& F( J
  20. 6 v% ]$ e0 W: Q# V' ^
复制代码

8 P) C( w+ i: {/ J# a2、qrcode_logo.php- {, |9 ^5 C' y7 ?- s' v
ps:生成带Logo的二维码
  1. # l$ e* L+ R3 b# O; R$ r! b
  2. /**
    ' [; o2 o$ w& d, g: u

  3. 8 K( k5 \9 R( ~: {# \) z
  4. * Created by PhpStorm.; c3 ?: S  x' Z/ t. U5 o

  5. 7 l: s7 O+ H# t* {
  6. * User: user% N. P" P) d7 S4 j

  7. * D+ g# w- ^, Q$ s$ L' }$ H
  8. * Date: 2018/8/16
    2 a5 v. F+ M1 x
  9. 1 M, T6 k  h, T/ p# c; K2 H' x$ ]
  10. * Time: 10:431 f. }5 Y# \; U6 B- m- J( C; J! q
  11.   {! k4 C) U7 |- o% f
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    4 P! f; h9 c. e2 b( Z

  13. 5 w4 T2 b& j, B0 r" `& f  c
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称8 G0 w: m8 G# D! A: G4 u0 p

  15. & Z& c! F3 {' e6 \( l
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ( W* p- J7 Y" m, r  `- U

  17. ' c) R6 u: h) l4 j& x
  18. $margin = 2;//边距
    % b& G# U' R- c# m! R2 x( |' b

  19. ' Z8 X* c. k5 `6 u3 ], U! f
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 I9 u! k- r$ L" ]2 c) ]( A1 X

  21. * {6 f& K1 j7 ~- ^1 j
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   0 a9 }2 p2 ]1 Z: U. c3 u! J
  23. * b0 c9 w) [+ O7 |& a- l
  24. $QR = $picPathAndName; //已经生成的原始二维码图  [0 b" m( G1 G; r2 n

  25. 4 y/ ^: ?, ^; L- q
  26.     $Logo = './pic/logo.png';   9 _" l' j# t  m% |
  27. - p$ e' O, g, y* j( W; Z
  28.     $Logo_re = './pic/test_logo.png';   + m# J+ U3 \. {: P
  29. # z& a! Y' D( Z( X  H5 f% c
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   + m" {* i4 r' N
  31. 8 W1 N) ~& r4 A# f8 I
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    : \3 J+ A7 A) P' k& k
  33. 5 l" d4 \1 E3 d0 A) q
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    1 O# G6 ^8 l9 c! c& a
  35. & p' R( n- E; }4 k& }6 Z8 h
  36.     $QR_height = imagesy($QR); //二维码图片高度
    4 ?' w& ?( z+ F. g: o5 D/ F

  37. & H- [, i: @( M" \0 }' B
  38.     $logo_width = imagesx($Logo); //logo图片宽度% K, M, J) r9 @, g/ `' l5 T: D0 f- [
  39. * a; B6 k, T. A8 i+ |7 b; X
  40.     $logo_height = imagesy($Logo); //logo图片高度
    , k. l+ M( u  Z) }1 u
  41. & r' u% s, V/ l) s0 t
  42.     $logo_qr_width = $QR_width / 5;   9 U* k, p2 [: [7 F; a$ y
  43. ! X6 c( k  u8 E3 N
  44.     $scale = $logo_width / $logo_qr_width;   ; Z  u& f  ]. w9 w# \

  45. 3 _' m/ R( P* g% ?& e# [) D( p
  46.     $logo_qr_height = $logo_height / $scale;   3 s; x) x+ r5 D! q+ T0 w

  47. " O+ B9 b8 ^2 b4 e9 x
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    * D3 j1 y" j3 m7 i
  49. # D  V1 L1 `+ e9 ]
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   3 S$ W2 f) z5 |& R* b
  51. % h8 a( [+ b2 ~0 n; P
  52.     //输出图片7 _3 J6 E' a5 H$ I( n+ {( r$ p

  53. ' _. J$ e& f9 _' |5 u' W
  54.     imagepng($QR, $Logo_re);, q! ~6 `  V: N; X0 O5 T6 I( ?3 }

  55. 8 a" z, _6 [9 s" w! I
  56. }  Y' l% E( m' F
  57. 1 q7 S4 }) e( w/ S6 [" F# \# C
  58. 1 \5 R1 ?6 d+ u( @
复制代码
3、qrcode_vcard.php (生成电子签名)
1 }) I( F" T9 e% W! ~4 X$ k! \; _) X- j$ l8 |% S' R$ R& h: b
vCard格式:https://zh.wikipedia.org/wiki/VCard( s- ]2 r/ B" y' U$ w' }/ H

' m0 s# C. h9 [* a

  1. . ^! P( v9 u1 k' U
  2. * Created by PhpStorm.
    + G' S$ U: D2 G6 h$ ]

  3. * v0 b, ]; H8 S8 n0 N2 Z
  4. * User: user& _5 h* i/ x" X) g0 e) t7 m- A

  5. * \# l* \% s: Z0 u
  6. * Date: 2018/8/15& n) a. H; g/ R8 F1 B

  7. , ~: v0 H. U6 C4 |5 }+ x8 i
  8. * Time: 23:00) y0 i2 k& `9 K

  9. 1 k7 L$ E4 x. m+ h
  10. */require_once "./qrcode/phpqrcode.php";/**/ G) E* B, {/ a8 [# q

  11. + n6 \' q: ~$ Q' ?+ v. ~; ^
  12. * 生成电子签名: _" Y: X! l3 g. F5 W
  13. , D; S8 }4 n5 ?6 V; d8 G
  14. * PS;使用微信扫描二维码
    9 [, D! @. p0 v6 u+ o3 C

  15. 1 m5 H" O. z+ w* G/ I5 ~* G
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志9 O( O& S. z1 W1 {* \% _4 w9 G+ q% V
  17. 9 O0 B: M- Q& S' j+ r- ]. z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    * R7 T9 R$ K7 }* q

  19. 7 n3 i# {  ^1 U/ p6 G1 o
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    : K* L3 `# L" ?& }5 O5 O7 A  C3 o8 |
  21. 2 h/ l7 T. E$ ~6 t
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称8 l! {: ~2 ]# b
  23. ( n+ M# o$ R# l8 V1 r+ |% i1 k
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ' X( H+ u" \7 `  N% o3 w; }
  25. : h2 c# ?! ?5 D$ M: B4 N5 \3 E
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    7 F* {  C# n/ l' T
  27. ) ?/ g  s# q3 r# e1 K  a8 J( K
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    ( k* g4 H$ v6 i: q9 Q
  29. ! b1 G6 q2 f! P
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ! G% C: i6 T" \0 |% R5 l1 r

  31.   Y# p$ w5 x* ?1 Q
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    5 k! i. N* B. B! T5 l

  33. % |. }2 M" B! h4 W9 j
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱+ i6 |: b# U+ G1 ]

  35. ' P* c5 ?2 B" l7 T
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    : ~. e" ]* Y  L4 j

  37. ' g$ _, b: j0 f: J/ B9 y5 r, h
  38. $content .= 'END:VCARD' . "\n";//结束标志0 P' u, v5 |8 w9 }0 A
  39. 8 O$ p6 z- U$ r; a  k/ n7 J) A/ d
  40. QRcode::png($content);
    * z7 b9 G/ D6 {& g0 Z" p0 ?
  41. # s" e# O/ d; I2 `* Y

  42. - u5 M! x: I# c4 e7 I. ^; @
复制代码
+ h/ D- m. y5 g& t+ T  O; ~% t, L
相关文章推荐:$ f6 F& Z# N8 _+ V! Y! d
1.PHP生成微信二维码实例
3 L* |6 J8 x9 J8 P4 z2.php网址转换生成二维码8 F( u% f9 X* B4 N
相关视频推荐:
% v$ q% x* ]) l1.独孤九贱(4)_PHP视频教程
/ L- y( x% n, @1 `. u0 L% A" U二、JQUERY生成QR CODE
  M" L6 D" F, e源码地址:https://github.com/jeromeetienne/jquery-qrcode
, R6 c  K  E+ b* W& u2 ?
( W# z7 |$ p  B5 Cjquery_create.php
) V, T: ~. [) }7 Q  G: [# e7 p( K4 L
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
( U. n4 |4 f4 U) X
三、PHP识别二维码  [9 `& I/ K# H1 u
1、方法一: F8 x3 E# C6 T# u7 D0 E5 d
环境需求,安装如下扩展9 R5 @. O& N7 b8 T: T! C
- ImageMagick& M* u3 c% q9 o
- zbar0 u; P8 C" \% B; N4 ]$ y
- php-zbarcode
, a5 r* p0 [, D# t3 ~# U
$ T4 m2 e3 j! E2、方法二. ]1 z! c/ v( d+ ]: l. l# r
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
3 i- ]7 I0 \/ B- {! ?qrReader类:https://github.com/baagee/php_QrReader
" `" x$ D. H6 R* M0 g0 W; I3 @" _3 S- x& c6 [: V/ ^
  1. + \' x5 B: d8 i% D& {
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - F, e! ^; p  z: f9 {

  3. 4 L7 O1 Q" V. h/ Q+ Q
  4. $text = $qrcode->text(); //返回识别后的文本5 `1 m0 ?; }7 a9 c0 y! z6 J2 [4 }1 [
  5. # Y7 {, a/ ^+ U! e* U
  6. echo $text;
    1 ~# {% W, G/ U

  7. ; z* x+ x4 q+ T1 C' y

  8. - n0 b' h% w6 w" b7 L
复制代码

2 O/ h3 c' r) ~+ S链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7. w6 F7 e: v# W6 X. x' P5 w' K9 j
  d$ Y/ |. D: g$ P- }, p

6 V% z, ^! n5 ~4 x5 ^& ^6 `: k" A4 ]' c+ Q  r9 V, q
* e) F( q* u7 _) `' I$ p  c

4 p4 B2 V& o: A  ?. C1 M
9 G" q. j& H) w0 k- j  c, i1 f* E
6 @; ~9 L) F) j" [' ?, E6 \; s$ _5 o! {9 o2 O0 u  {

* K; ?4 ?" l. v5 j3 [8 j0 G3 K# k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 18:08 , Processed in 0.088675 second(s), 22 queries .

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