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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
, w- T+ w4 _5 x2 k" r4 V# l4 b---------------------------------------------------------------------------------------------------  o$ ^$ {7 R* `( m1 Z! `
二维码的分类: n# a* \. Y) V- h* C8 t& i" F
线性堆叠式二维码; K# N, T8 }6 c- c

3 @/ C6 z! ^9 Q矩阵式二维码  i0 F8 O% z; i9 Z

2 z4 @! \5 H9 E二维码的优缺点2 e8 H. q* A8 @( p
优点
6 Q, |2 }% N- x; Z7 i) f0 J- w7 o信息容量大
; t5 Z; c( W% G; I) o. S2 i0 M0 _5 a4 E$ M4 M: M0 k
编码范围广
7 v0 U" c0 s4 _& i; g8 I7 \6 k9 g" m5 k- Y, w5 M
容错能力强+ m, I* s* W+ T

6 E. Y# @. K% K- J6 U* h译码可靠性高
+ M- N  G- F( S6 L$ j) z! A; y1 }( T7 L7 J0 V6 G  W( D
可引入加密措施5 l  _, Q7 R( q; t5 b
4 R) S' a1 S( J; D: _
成本低,易制作: [: O9 A7 p0 m- C5 t$ T

, W' p$ N0 x( J6 R6 G# b: M* v8 R: k缺点
9 e3 E8 F' G1 {2 c7 G. V二维码技术成为手机病毒、钓鱼网站传播的新渠道
5 {1 B( `/ q( v# j' x( J' o1 b4 X5 B9 I1 p! }
信息泄密8 F* Q3 ]6 H8 A8 d- z

! O3 J# ]9 A) ~& @0 n& \% _" e0 s3 A目前流行的三大国际标准
9 ]1 r2 Y3 c' e. h) {! @PDF417:不支持中文
$ P- ?+ K# `: ^, G0 p4 w
3 ]- w$ Q( b( XDM:专利未公开,需支付专利费用
$ T: d  H& D8 m" n4 o) j
0 u3 X! e" \/ V& \QR CODE:专利公开,支持中文
/ b2 n" t8 q, B" j& @0 J$ v4 K
- z2 ^( _5 y- d3 AQR CODE 纠错能力3 A$ ]" U3 u+ T6 @
L级:约可纠错7%的数据码字& o! `0 Y- M5 D% c9 T$ c  [3 z5 X
# k2 v0 X/ N; l# z
M级:约可纠错15%的数据码字3 x% @: d9 K0 K# u
8 i4 X+ q" N! i5 k
Q级:约可纠错25%的数据码字
( G. c/ i" F6 G- T% d9 c1 ^) Z* M1 F4 \7 i
H级:约可纠错30%的数据码字& K8 F; R) F# ?7 Y  x

5 M: t: m# f$ Z5 E前提条件1 `& W: g- y9 I- ~. E! K
GD库1 S' Z! f3 H5 B" z/ s

  e, q9 J( T& l# K一、PHP生成QR CODE" A, \8 E3 D* E
官网:http://phpqrcode.sourceforge.net/
; I/ S2 e' d1 w& B; U. G* @& L1 k
" Q6 }+ q6 v! d3 m- B下载源码:https://github.com/endroid/qr-code
: H7 J5 D, a" ]$ ]  M
6 Z5 e) L8 ~# c8 Q目录结构) r+ z" P- x$ [/ p
( ^8 ?; w+ p9 [

1 L& i% ~0 N+ A7 ?. ]2 v9 A1、qrcode_create.php
( |0 @; \$ G2 Z; Aps:生成普通二维码
( l1 Y, F3 l  Z* q" t
  1. ! K+ I0 a; T3 }9 X0 \
  2. include_once "./qrcode/phpqrcode.php";/**% F( K; f+ h/ X/ {2 [, S  r
  3. . u) r9 [1 ]2 B1 W4 E. S5 G2 _
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径6 U, F! ^9 ~; W) c- `+ g+ S, _
  5. 9 w, }" t* q' b, c) t
  6. * 在浏览器上直接生成一个二维码(内容为abc)" ]9 P6 ^& W7 D8 T0 f

  7. 9 o: Y+ G/ `; Q% F& u
  8. */QRcode::png("abc");
    $ q% K. [; E% t/ d! U+ \

  9. & m% G! X  Y9 y7 d- n( G2 Z
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    : T6 k% g; d7 L# u' g. h1 S
  11. " g" I0 v2 Y, a8 u' I; s) K8 O
  12. * 生成文件到本地0 t- ^, k" W; m" X! W1 X
  13. $ i% n$ z+ X! u/ w" M
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ; n  Z* Q- ^% a( l% v; y" S

  15. 3 L8 }, Y' E) G# i' A3 k* z
  16. * PS:$saveandprint源码的p6参数做了修改
    6 ]3 P# ?( z! Z3 W

  17. 2 n! w( W  }% Q0 n; T3 ]
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);/ n) C" i) T9 e5 T

  19. 3 U" T; o2 M& p. }( r0 k- m8 V

  20. 4 D- i" p9 ~" D) `8 A1 Y# B; F
复制代码

% O4 T3 K/ s- w* H2、qrcode_logo.php; P; }' V! {/ X/ H/ d( b7 L
ps:生成带Logo的二维码
  1. - e" a4 c+ x- X0 s
  2. /**
    & @8 ~9 n% c' G

  3. 4 q3 I8 z8 _& H! ^5 v
  4. * Created by PhpStorm.3 v( U4 ]; q( d9 f6 r& B+ V

  5. ( n1 E' ?8 c' l. I  z5 k
  6. * User: user
    6 k# m9 d. L* v2 L

  7. * W/ A  b1 _8 F5 n
  8. * Date: 2018/8/16' F7 B6 ^% I' q6 u! U4 I

  9. 6 B) x& N' p+ X/ {$ ~$ I$ b3 P  w
  10. * Time: 10:43
    7 ^  P0 p# h/ t

  11. 3 f' h+ T* D: o* C  U
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";5 m$ E2 {+ x: x* i! i8 [: ?
  13. ( c4 J0 L( F7 \! b
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    $ o! ~! t4 J# Q, O: m

  15. 8 a) P3 N5 X8 U! R4 i- n
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    ( _0 p! ~" E& a  M
  17. 7 o1 @; d5 o. p! c
  18. $margin = 2;//边距
    8 t% Z. E* w9 N4 D3 z9 q2 U; L( I8 x* U
  19. ( D! g- N8 ?3 R- O: y. ~+ K
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    / x, Q  `/ K- s) ^
  21. 5 D7 e3 e) I6 _  [% `
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   : f( I& [) E0 {

  23. , a7 `& J+ S! o0 \+ F
  24. $QR = $picPathAndName; //已经生成的原始二维码图& i- H/ R; d+ n

  25. 0 S4 p7 o: A, O
  26.     $Logo = './pic/logo.png';   ) b. W. c1 K  r$ `  F& g4 u6 W. a

  27.   u7 D1 @) U; u* U' n0 W
  28.     $Logo_re = './pic/test_logo.png';   - _" u( G4 u7 ^8 L  G8 }8 o) l5 p

  29. + n1 O0 F5 {. ?- ]2 [
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   8 S5 Q- q' I# z' d
  31. ; G3 r  \9 X( g+ U4 v
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    ! @& T1 p8 `: d. D% w
  33. ' j# ?3 Y3 s4 h2 u, n
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ! Z3 ?2 T" H9 H
  35. & i& W& s. p! n7 ]3 G- z4 S
  36.     $QR_height = imagesy($QR); //二维码图片高度
    / p% _+ Q% y1 e* `7 m: p4 U& A5 r
  37. : V: \+ d' m& t6 I& f9 L/ l) s7 A
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ! _8 y% e/ O% b' {% b5 P' [0 R9 n, a

  39. # k1 ]/ {( H6 |1 `/ ], {2 q" G
  40.     $logo_height = imagesy($Logo); //logo图片高度: \$ s, c2 v5 _) m% B
  41. . r* S, ^) z' l  L8 K
  42.     $logo_qr_width = $QR_width / 5;   
    ; J- s* }* Y2 Q, {5 X! J+ c: A, X

  43. . d& _0 D, {' A! n! B5 ^0 ~
  44.     $scale = $logo_width / $logo_qr_width;   . X) t" I% d. D
  45. 1 L% t0 N2 i4 Y) k+ K
  46.     $logo_qr_height = $logo_height / $scale;   
    + H/ K- g) L; E
  47. 6 ~2 _9 ~4 \. ?) d
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    / F4 M: }* m  {. v0 b  n, w( }
  49. 3 c7 p% E: M% K  z
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    3 x& ]6 `9 m4 \2 W2 s' Z
  51. ; Y) b; C7 K( {) Y/ v. b  ~
  52.     //输出图片& E5 e- N" h' N
  53. 3 v0 r  v; v( @) s5 Q
  54.     imagepng($QR, $Logo_re);
    0 D3 O: g3 Y/ u  V& a3 w- l

  55. / Z* F4 f* H; W7 q
  56. }2 [  t& _" c% @  w
  57. , b' @7 U% v. F. r

  58. . W! ~7 C% r. H! g
复制代码
3、qrcode_vcard.php (生成电子签名)* x9 f( {! I0 k9 b/ z2 R( a/ {5 v
& G' ]2 ?  L* P7 r& @
vCard格式:https://zh.wikipedia.org/wiki/VCard. k( Y4 U/ a6 O" V' O

8 g' T; d% k  A, ^2 p5 F8 X% F8 _8 ]
  1. 4 y3 Z+ s( a1 m3 b
  2. * Created by PhpStorm.
    / K/ F1 p& _" i5 b$ j5 D7 G

  3. 6 C* z3 L- Y! F: U) ]% s9 e
  4. * User: user
    0 R& n: g7 U5 |2 t1 b2 `- c6 p9 v
  5. ) U: V9 ]7 P: f' T0 n3 @& `, `& x
  6. * Date: 2018/8/15" g4 Z" F. j  i) o" h& v. ~0 T

  7. 5 e5 v" k. s6 g$ n$ ?
  8. * Time: 23:00; c, b2 @% H' H3 {7 @2 ^
  9. ; j2 P) o8 M5 v% F
  10. */require_once "./qrcode/phpqrcode.php";/**7 X$ F3 A3 u9 c% G) E& s# E

  11. . C( F5 v% {" ^- }. K9 J; V  M
  12. * 生成电子签名  O8 f1 @* _! g& p
  13. 8 n- R/ q8 z0 W) z( D
  14. * PS;使用微信扫描二维码9 U% s1 h6 R" {1 S  `) B( h" q

  15. ( S& i9 i8 }; l# l  Z
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ( K7 |: ]) _& G/ o
  17. 1 z" y% ?! r- ~7 j8 e/ w4 h- k  j
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ( s" b- u1 I% B7 \, ?7 H* W. `

  19. 7 x7 N3 s  K. Y+ S. Q3 ]
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    6 ?1 I9 ~# }& i

  21. 1 A8 y% x: c, d2 A' L
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称6 P9 k" \8 S' j) K% W2 Q; D/ l

  23. 2 V0 ?  Y) m! V0 C
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位% t, E8 ^( `& F  N' Z. ^+ i0 p

  25.   F" C+ ~5 ^3 u# m1 o6 Z6 @
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话9 i0 a7 y* m$ M' t' S, e; f) u' `
  27. & t# j0 O0 _% \1 P% t# G$ M/ j
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址1 p9 W1 R# E, S
  29. " x* z- z  J4 X' a, t1 c
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ! [  q8 ?0 ?  g, _; _

  31. ' I' J% }" P! f3 _9 p  u0 @
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话, S. h' X( n! g% [1 S

  33. $ X" D) N9 T8 \4 d  j$ @
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    & Y, b. j/ V6 B8 W1 ?8 v
  35. # S3 a4 m& {1 i0 m5 `' G  E
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页4 C) ~- i3 E6 k9 q" b
  37. 4 K; E& F9 \6 ?# Q# i( S
  38. $content .= 'END:VCARD' . "\n";//结束标志
    0 q( H, A. I6 {1 y

  39. ' M; P; f* k  G  l
  40. QRcode::png($content);/ }% d) O8 S$ w  V
  41. 6 u4 d# T3 }5 `* O+ u) S, V

  42. 9 F0 t3 t8 n2 l* E7 @, i! F* o
复制代码

2 P, K* g! {: i相关文章推荐:9 F; A* b3 a, A0 V
1.PHP生成微信二维码实例
( T& k. L( M, t  p) l( p2.php网址转换生成二维码, W3 {5 l$ j& _( ]1 L2 H
相关视频推荐:7 T! h8 e# R* J: y' |( u6 r7 G* G
1.独孤九贱(4)_PHP视频教程4 Z5 x6 c% y  t  ^& e, |
二、JQUERY生成QR CODE$ |6 X& j+ ]1 g( }3 B
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ j- o, j4 Q6 K
( ?( c; Y% p  s* O
jquery_create.php
( \5 i, [( T' ?" n) ?8 B9 S
% W  I( m: ?9 z& N+ E
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
2 l' y) |$ i. e, w* v
三、PHP识别二维码5 S9 q/ s2 D% b& Y- k
1、方法一
' l, z. f6 X; y, i0 J环境需求,安装如下扩展
) Y9 D/ v3 _. G0 d0 L- ImageMagick
/ Y5 y0 M7 c$ i& n- @! ]' }  w- zbar
% ^) H" e+ s! B8 e. g; g7 v- php-zbarcode
  V; ~# O1 @# o6 n6 L: L4 B( q! H3 E5 [0 x  M( [  a4 t
2、方法二6 R& P  v( h# n
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以  D! r- D+ e; K5 K4 Z, Q9 @9 K
qrReader类:https://github.com/baagee/php_QrReader
5 e2 t( c6 u5 s5 {' d, d7 `$ S
) W4 e# M+ Z* e6 G7 G/ N; T; ~  n+ e

  1. - \: o4 K7 M! t1 E' v
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    . a  X' k% h/ m/ l. ^

  3. " B2 L* k0 B* M2 J% R3 C* t& {
  4. $text = $qrcode->text(); //返回识别后的文本
    9 J/ `4 c: d9 R' A; L- |
  5. " n7 O5 F5 i# L+ W3 B4 n3 X8 e
  6. echo $text;" C4 Z( ?3 r1 Q: S$ P; @  p: U
  7.   F5 y. e! f7 b
  8. 5 N; p, H9 {. w
复制代码
% t& U; `2 n4 n! j. I
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y73 n; V- o4 Z( J$ x' n+ N
% t1 G! {; F7 E8 w* ]

! W7 O" M+ ~+ b7 k' B; O3 Z
0 I- j1 o) P( t, M. R: U# M( p0 j) N9 f# M: ^' u/ `* i
8 O& Y3 ~( W% n$ o/ I
  U: }8 W8 i. @2 ]& I

+ Q' [) g* n8 o2 b9 d; B4 S
. G% j$ O5 r# ]# \: d9 `+ ^9 Y
, ^1 v( w- v, w# P3 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 14:59 , Processed in 0.070687 second(s), 23 queries .

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