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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
- |( _, k0 x- ~2 t! v% J---------------------------------------------------------------------------------------------------
+ q0 {3 C2 ?/ n" N' ?二维码的分类4 o& k9 |& o# ?# r
线性堆叠式二维码
- O# L1 j9 u, m( A: c2 |
$ t; G! s9 b+ o3 k- M7 J1 h! ~矩阵式二维码, L  s4 p! f% l

3 L# x: k  F9 ^( B! _/ k1 @. ~二维码的优缺点
4 E: x0 ?! y5 N) R' M+ E* Z优点
0 ~# Z" M6 p" U/ e6 s& P3 A( G信息容量大
  q1 t, F6 p0 x& K# M' `. o) J, C. L. r# j. R( L$ s. }( x1 ^3 J
编码范围广
0 d; d% W- E* m' d
3 I! h" I  f2 E容错能力强1 Z& f7 {  I. D; ?" d: u
2 r4 W  E' k" P  f
译码可靠性高
$ Q" F/ [2 q: Q. Y/ t
0 x# I1 d' C: a! x; s8 N可引入加密措施
+ z$ h- z) M$ n/ z) c2 a: [, E% Z5 a$ m1 s+ g" \
成本低,易制作
  j) N2 G2 l: ^2 Z) e2 Z' s
( U7 Z; T5 g  O1 F8 |6 f( M1 Q6 C缺点
0 s2 m$ r& }, |, `$ y* e; s二维码技术成为手机病毒、钓鱼网站传播的新渠道
+ O3 K: w, A7 Q  f7 ~0 L2 K% q
信息泄密
- M4 e$ U7 i( P0 f' d; @
2 c0 \, ], j' g3 c/ V- f4 Y1 N目前流行的三大国际标准
5 A7 B4 g: `" |% N8 vPDF417:不支持中文+ A/ V/ s8 j% N' b& V- y3 x9 E
  ~$ }  M8 s5 G/ s7 y1 C: p$ F" _
DM:专利未公开,需支付专利费用
9 @0 O, Z+ T+ ^, I7 W( P2 x! p, L" r% L& v! ^$ M: g! h
QR CODE:专利公开,支持中文# O' V# M1 J. s: Z0 ^

. B' R- v  v) r) P: K6 n$ XQR CODE 纠错能力8 n% F/ u3 ~( ~, k/ p. R/ ^
L级:约可纠错7%的数据码字
6 W- N3 Y0 s9 C+ n4 }. P' w& P
/ E% O' L9 }. y6 H$ g6 NM级:约可纠错15%的数据码字
2 Y4 v1 L! x6 j% E6 `3 X. v9 \$ J/ w! F; P' M) k
Q级:约可纠错25%的数据码字. c  K8 L/ @4 B( G) S

3 @' Y: r9 E- {; j8 wH级:约可纠错30%的数据码字8 X0 A3 X: }) [7 k
% X) r. q$ D% g9 D# w4 A
前提条件( s6 t& K& q% w# }; V/ `- H
GD库
1 s  n6 C5 t1 l% W7 W/ j- ?, f( K# N: c5 Y, V, |; `9 X5 ^7 D
一、PHP生成QR CODE2 c: T# s* M8 ^9 ], l% b
官网:http://phpqrcode.sourceforge.net/
1 C" }. I. U  l2 X" Z1 O
3 ~# P; U4 S5 C! r. ]3 y; c, V! r下载源码:https://github.com/endroid/qr-code2 _4 W" l& `# q  J2 g

: u9 c8 J6 X9 l: Y4 }' q# l( Y" B目录结构
3 e6 r7 O( v& O! @  j
& i) W3 x' Z, t0 r+ ]+ z% B
0 \1 s- M' U. T" q1 w1、qrcode_create.php
+ D7 e! l' N5 C3 Yps:生成普通二维码
0 ^: U. y: J" @# V8 [4 c
  1. " ]4 ^3 k1 M& U( K* Y
  2. include_once "./qrcode/phpqrcode.php";/**2 a7 R% O0 m3 B6 V7 m% ^. |1 c8 Y

  3. 7 {/ W* A  y* V+ v1 m
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径9 S! H4 m. w8 d6 y+ x, ]- s

  5. : {0 Y1 v5 t$ u- ^3 D% \1 P
  6. * 在浏览器上直接生成一个二维码(内容为abc)2 ?# {* z& ~: E$ V: ~

  7. 3 Z; H3 }/ R5 D: p2 N- f
  8. */QRcode::png("abc");/ r, G$ W  \) g. q3 d+ ]1 L
  9. 9 ^# s% f; I  a2 \2 U
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**& V' ?# ]. f: @$ N. V4 E

  11. & j1 C- j/ ~! q; k& b
  12. * 生成文件到本地
    # g  ?+ W% b! j+ }

  13. + p8 Y: `+ W9 g2 y6 f' Y
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)8 J8 b7 x+ S8 v, Z6 O# ]+ O
  15. 4 x; i$ @6 I  i4 v
  16. * PS:$saveandprint源码的p6参数做了修改) j3 i3 V% Y" J1 K; T! S- a

  17. & f' g: |6 Z. w1 x7 S
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);1 f9 Z" j. |( c/ M' y: T3 T4 c: G

  19. , U% w" Y+ A3 b8 t9 F! d' {( g

  20. , \2 X# }8 p. s% Q/ v( U+ z+ K
复制代码
0 [6 t9 O+ m* R8 ~) c% Y
2、qrcode_logo.php, k* d7 \& Y: N( Y
ps:生成带Logo的二维码

  1. 2 ]( }2 G9 Q7 @1 J" p1 T
  2. /**
    2 L9 B5 l6 H! d% l8 Y6 Q; }5 P

  3.   e0 m; q1 E: G' w( h
  4. * Created by PhpStorm.: R9 n* R1 E' g+ C, W
  5. # E3 r6 s: `5 ^* S- Y
  6. * User: user
    ( F: q8 D, O5 u7 C7 \
  7. $ e: P& D7 G- C# C3 ^, I7 v
  8. * Date: 2018/8/16
    # B7 D( @% j+ b  Y, z1 Q

  9. # J  E% ?6 m* y* @: U5 _1 @" t
  10. * Time: 10:43
    2 L9 P# s2 t; ^- @" P) O
  11. ( v& W, [5 \7 U  c" _  N7 ~
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    - ]' k7 Y; b: O' T' ?, C* {* G2 J
  13. ( A( O7 Q, M) s" {
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    / d# x& L& @1 Q, W, e
  15. % i* s  {5 z; n, Y" w
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    % ]' l% ^: L. T, B  j; @7 ]2 _" O4 b' o
  17. ) W7 `$ O9 U# j* {2 V6 O
  18. $margin = 2;//边距5 D. |/ e8 E, N% G9 B
  19.   ~/ }6 }4 `, U1 I' x
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片2 j- _( s- G) F8 Y, [

  21. ) I. s9 n) ]6 J4 B& R( `. q7 u7 O
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ' q; H0 j' E3 N9 C; E

  23. # K$ p7 h7 e% ]# Q- S
  24. $QR = $picPathAndName; //已经生成的原始二维码图0 `. J9 C7 ~, o* m- c
  25. 9 a5 z& \/ F: z8 i, }/ q' [
  26.     $Logo = './pic/logo.png';   0 y' g( Z6 Q/ _5 C. @. c
  27. : h; J+ o6 t' q+ V) S! v& q& |* ?6 i  w
  28.     $Logo_re = './pic/test_logo.png';     X! F1 d3 q5 Z) K7 r

  29. ! g) s% X5 {. f+ n+ K$ q! L
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   5 W5 _" N# F. |8 n/ x* T
  31. 1 q' `' K/ J& h7 O: i: N) v6 m
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    & A. j  ]' ^* m1 @/ j/ ^

  33. - L7 ^' ^5 g" Z+ P" q+ s
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    6 m1 ?# h( O( I% U. y/ b8 q
  35. ' y9 M2 D) P3 n$ T5 ~2 y
  36.     $QR_height = imagesy($QR); //二维码图片高度
    , |$ g. z4 o7 ~
  37. - H- t4 }7 c! e. c6 }. Q$ K  b9 e
  38.     $logo_width = imagesx($Logo); //logo图片宽度& K4 H& A- |. ]! w$ v" _+ o

  39. . h; p3 G+ D/ _1 z
  40.     $logo_height = imagesy($Logo); //logo图片高度) \  l; \9 ~, g

  41. 6 h  a& |. _& S" m
  42.     $logo_qr_width = $QR_width / 5;   
    * v3 M4 k8 }, ?1 I% k& r$ Y
  43. + l/ ?7 e  m5 O  R9 s7 z0 N
  44.     $scale = $logo_width / $logo_qr_width;   ; V/ f% p5 L* U5 c) m2 b& x  b
  45. . g5 O4 O7 y* T% M
  46.     $logo_qr_height = $logo_height / $scale;   
    0 ~: W7 Z( a4 w6 ^1 @

  47. & H" z- l0 [* o: [9 C- k
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    5 q- Y) b' E  _$ e7 J9 d! f8 S
  49. ! I! ?1 R9 {& R" u. \
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    0 H5 [! v2 S: W+ z6 V( U
  51. 4 j  O/ B) j. g2 a- Y
  52.     //输出图片
    7 e3 M$ x, E, Q8 i+ G! O- n

  53. 5 e* ]5 P3 Q0 M$ {- U
  54.     imagepng($QR, $Logo_re);
    - F/ T+ ?& ]7 B' B9 P8 A

  55. - [) F  i' P* U# |
  56. }
    * Z& o: }( a$ y& a& _" p

  57. 4 _: D) k  Q' P! w* D: `7 K

  58. 3 b# t3 |+ Y$ {7 d' i) X
复制代码
3、qrcode_vcard.php (生成电子签名)
6 G+ n0 t) u  A
" q. O2 k) T. [! `) U4 {vCard格式:https://zh.wikipedia.org/wiki/VCard
* q% L* }; `' a9 m* l& e, Z3 Y2 A/ b6 }, [7 P. P+ m

  1. 2 u4 j5 e, _) s1 v, U
  2. * Created by PhpStorm.2 h- I$ X8 g1 C# V
  3. - c8 g1 Y: ~; Q. t1 c/ k
  4. * User: user9 A( b9 N- G3 ~; d" z/ X/ ^
  5. 7 Y) r# J0 p2 E, f/ i7 l, x9 G
  6. * Date: 2018/8/15
    9 G6 K2 a  v! x: j5 v7 x) A9 w
  7. ) A7 v, q3 |) C
  8. * Time: 23:002 G2 Z; [3 r5 R6 t8 n0 w: G! b  J6 h
  9. 1 x3 r7 P+ e+ _4 _
  10. */require_once "./qrcode/phpqrcode.php";/**3 r3 {' }3 }8 m

  11. 9 }* C& Z& s0 J6 s8 g0 v( M- ^
  12. * 生成电子签名
    : Y, U8 v$ A' e" [1 G
  13. , ?5 g2 {  S$ _
  14. * PS;使用微信扫描二维码$ X4 M; @) p9 m: z1 x! i; g( w. [
  15. # G3 x# X: |) U7 y* W" ?9 T. K
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志9 F. G* |# U' R  |+ g2 H/ D
  17. + Y: X+ r# c- |0 h  P4 p
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ) s0 b! z# S9 v$ [4 ?

  19. : I' T! x' m! o$ t9 j
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名: [! u$ W1 i+ V; G! N; c
  21.   F5 D; z# |" I; d
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    9 t$ Q# e4 S7 v. v. J& e& K9 P6 r

  23. $ x. \" w  z) o0 C
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    6 e3 i4 X- u* s7 @' q  e& _
  25. ' }# s9 q4 e( B" H
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话4 O' h0 A# K' X% ~, G
  27. 6 d$ |1 \' d5 E2 ^' H+ i8 i$ {
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    . }7 w' I" {( B: @3 ?
  29. 3 K0 L5 p# z8 r' a6 R
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)7 N8 F" m' c! {" r
  31. 7 H* n9 P; S5 o  A
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    " N3 a& G- j& V0 U3 x' J# `
  33. 3 m. E* A7 r; S- e4 p) `
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# D0 f7 z3 d8 g$ u+ x) i# }
  35. + j9 I( G( F! z( @- O
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
      V( y/ h5 U# P( {# z6 i
  37. 8 [. b1 c* H4 n& Q5 W% H; H3 X- R
  38. $content .= 'END:VCARD' . "\n";//结束标志6 O) A" E. k- T' N
  39. $ G- W( z' m7 j
  40. QRcode::png($content);+ D- f) ~( I8 P# G3 J- Y" d
  41. + \0 p4 J, ^$ r9 e5 I
  42. + N! X- U0 K4 Y3 J
复制代码

8 b: k5 A3 _, X) y4 B相关文章推荐:
6 h+ z. i; k+ q. t1.PHP生成微信二维码实例
: M7 Z6 J/ c: c2 Q2.php网址转换生成二维码
& d* i% ?3 J, X1 M5 |) Q; G相关视频推荐:
" @5 v' a# H* y2 l& C. \) C) Y: U1.独孤九贱(4)_PHP视频教程
3 J1 R( X0 T/ X6 r+ I  x二、JQUERY生成QR CODE, @3 Q+ K1 _4 W3 }
源码地址:https://github.com/jeromeetienne/jquery-qrcode
  s% [9 B5 u/ q" x$ t; U* F1 }# G6 C1 @7 Y: X, B" D
jquery_create.php/ t3 S, W: d  O- b
% L1 k! i5 K# [5 }# l) Y7 N6 D
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

8 k/ V. P+ R( G  y& k三、PHP识别二维码
; B% G) u/ H8 Q! @0 ?7 v1、方法一
) p/ F' Z5 t/ I5 O环境需求,安装如下扩展- k7 N/ g5 I8 Y8 C7 x
- ImageMagick9 T) E$ \1 ^/ N1 u6 p" l9 a  f
- zbar2 [7 m! Q% R( m. D* N: C
- php-zbarcode
- K6 p  s+ F3 s) S  r, Q3 b  T6 j% g0 q, E* H
2、方法二! g# G9 `! d9 h$ H3 L0 P
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以7 X0 s; p8 g$ ~- B. X6 _; y1 |3 D
qrReader类:https://github.com/baagee/php_QrReader
5 J9 h" w; w1 K) b- ]. v& @5 h4 _- S

  1. ' C( l) x# ]( F" s9 Z
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    $ I& r" y! d# Q! Z

  3. , X* u* i% U1 M/ T" f5 W3 E* p- T/ S
  4. $text = $qrcode->text(); //返回识别后的文本
    . j9 V/ N! I9 Y9 @* R
  5. 2 F9 e1 o/ N' d
  6. echo $text;# F5 H7 l* S% e' c8 t

  7. ! M  J# C2 P( h5 j0 x

  8. - q; M% `' R/ r/ d0 Q$ ^% ~8 R
复制代码

0 @! a; z) R2 L: C2 t( S链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7, `, F2 A" w6 Y/ W+ v
  P0 H1 x1 Q) F  `3 c; R" o& i; {
$ R2 Y" l5 h& U8 c
5 ^3 f5 R6 i, _* }& V

8 Z, \! q" y0 G( u* {2 X" F' m6 R/ ^" V2 L/ j4 Y( B) n  S, Y

- v8 y$ r' y9 [  e0 C; m$ U/ l$ [4 `' I1 v+ l% _' e8 e

9 }0 y2 e- o. v6 b' c: H, }
( }3 e9 x+ P1 b9 s; k& l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 09:47 , Processed in 0.075969 second(s), 22 queries .

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