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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 16091| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 N4 [- E' M1 p---------------------------------------------------------------------------------------------------3 k) Q1 N% Q2 ^
二维码的分类
( D7 e: W9 B$ Z. Q* G; @线性堆叠式二维码
2 N9 K% T( ^( U0 W; j
' q+ o: e" z, \$ ^; p* u" k矩阵式二维码
% D( K+ U6 i3 i1 ]5 D/ `6 E) L/ M1 d+ `
' p' T$ W$ Z8 t4 T% P二维码的优缺点" r2 i7 r0 W" s
优点; j- n2 V$ K( k: n) a
信息容量大+ p5 Y0 n5 J1 ~% L$ f

% p6 p" f5 P$ m" d; j5 H" h' |编码范围广
! p' {. G, H2 Y. P" P# f
0 _; g+ X, z0 h' d; F! ?容错能力强$ @5 w5 x+ g' o5 U0 W1 D! N
) G" i* G( {+ Q( n# y& n0 h
译码可靠性高
( f5 ?# ]$ k% B2 G1 L' f5 s0 k6 x5 x' t. w. a* @3 q
可引入加密措施4 a! x$ J4 ]9 B

- F1 y4 z* E% F: T5 S成本低,易制作! |- _0 L% W, S+ q0 Z; U
2 S- J( ~0 G, o. p2 L4 {
缺点0 N# r3 D$ r3 P( ?/ V9 V
二维码技术成为手机病毒、钓鱼网站传播的新渠道
- `7 I3 ~9 y, z( U" Y: e+ h( I" T) B- d
信息泄密2 `, l1 v% z+ W, G" \& `# t

, h$ r/ t- Q0 H7 N" h) `# g' w1 M目前流行的三大国际标准' q& A# A. M4 N
PDF417:不支持中文
) v, k/ l5 F1 |9 }
9 p9 D- s% K+ M4 @7 vDM:专利未公开,需支付专利费用
' [) _  l  O0 E9 j+ r7 j
9 ~' T; H2 o6 n( H. ]7 kQR CODE:专利公开,支持中文# g; h- u# v9 E6 _% h6 c- f0 R1 n4 R# H

) a: b$ j: C( M+ oQR CODE 纠错能力
: y; D& y. F  ]/ p" WL级:约可纠错7%的数据码字3 ?( w; \9 {8 F
, M& f( n& S) v
M级:约可纠错15%的数据码字
/ B; a: ^# r$ C. y- A( K% i/ S0 Q9 B  f: g# h/ g9 K" p" ?
Q级:约可纠错25%的数据码字
: t$ x* n$ X5 g1 m& c
' y0 Y# {3 w3 P: F  G0 T5 BH级:约可纠错30%的数据码字
- f: R9 v5 k; m1 {
4 Z; O% ?) w. E# b  n( N  n前提条件* }0 }3 G' [* `( Q7 \9 I) o
GD库
! u1 m6 Z0 f) f6 T6 F' s5 ^+ N0 C8 K8 I7 X+ R
一、PHP生成QR CODE
* N  H9 G! P' _1 M+ K官网:http://phpqrcode.sourceforge.net/" M. r6 s' `: M3 x- l" d( I
% S4 ]% X! O/ @# V$ t/ R; O
下载源码:https://github.com/endroid/qr-code1 ~9 x8 i+ h$ H  J

. z4 d* h1 T$ _  l目录结构
3 k2 O, I6 n- @+ B' E # E5 v4 K6 z1 R  I9 _$ s
& \! v5 O2 J! A4 @8 [2 K
1、qrcode_create.php
( n1 n+ M% ]. E' x! m  G' ~ps:生成普通二维码
  h; I$ D6 c  H
  1. * N. m. g- i+ u. U
  2. include_once "./qrcode/phpqrcode.php";/**$ o" [) j4 z4 b* j8 Y( i
  3. 1 r& ^: f) S" X, f. l3 C
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    2 o# G, i. X. u
  5. / r1 B8 A3 ~: w$ |/ X' z0 P
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 V" u$ z6 ~: v; Y& z2 T' t' ^& w

  7. & G2 D* [/ j6 m  F/ F' k8 m
  8. */QRcode::png("abc");
    3 K' Y. e  y, I6 v  ]. }
  9. % G5 j6 }1 k6 Y" P
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**+ ?, A9 A& I5 D) \4 Y( m
  11. 9 T: l3 Z, O' r) P4 V
  12. * 生成文件到本地; ?$ \3 p+ `: m+ w
  13. 6 D4 Z. w9 c  q( S8 q# s
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    , |/ u' f& P1 d9 S

  15. $ w/ D$ \0 \) g7 h
  16. * PS:$saveandprint源码的p6参数做了修改2 W0 Z0 a% I8 K/ E; ]: l  Q. d9 h
  17. . u1 ^5 Z' K" R7 f
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);& ^: n0 \7 G" v' S& z- }) O. i

  19. 3 {3 y# X- E7 s# R9 o6 d" ]
  20. ; w7 B& e- L5 W. L/ ^  E0 W
复制代码

& C- }4 Y8 X5 u! f! ~0 \( s3 w2、qrcode_logo.php
' {: k9 [: j6 ~ps:生成带Logo的二维码

  1. + \2 c: M  L+ s4 i
  2. /**4 L1 K, Y/ W  }. _5 C  I, x
  3. * ~8 C, F, V' r5 l
  4. * Created by PhpStorm.. e8 V6 ]3 q5 y

  5. $ H7 M7 s8 U, Y' x& l9 q: L  r
  6. * User: user
    ( t8 l. i) `8 P6 f  \
  7. % R: g6 }+ h- E/ A% G3 E7 n
  8. * Date: 2018/8/164 j5 w; b( O$ I# v9 q# Y
  9. & O# {( v6 c8 ^$ w& [% T- D  r
  10. * Time: 10:43
    2 H) _& z0 l3 P1 A
  11. . ~: q; y  i* J' a& Y3 u$ e
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    # b. h7 V1 n1 `+ P

  13. ' N4 C  U6 u' u' }5 r, i9 |
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    , R. u) f# L9 `, Z& {: \; L& _5 W
  15. , z& J9 v0 P$ F
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
      V$ d6 ^6 T0 r2 D" H. S% \
  17. 6 w- ^4 Z. R2 w* e( ?
  18. $margin = 2;//边距9 X$ j; y! O5 V/ n
  19. ; a: ^7 d5 A$ M- d! G  l! Q9 j8 l
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片9 ^& X# q$ b4 g  o, ^4 p, ^

  21. . i# p8 v2 s) `$ c9 R. J8 Y
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   1 t. F8 [& N7 {/ |/ `
  23. 9 w+ X5 G5 P; _" d
  24. $QR = $picPathAndName; //已经生成的原始二维码图' g& y+ Z( v2 ~8 v1 U. z. g

  25. 6 I! B& s5 S8 l, K
  26.     $Logo = './pic/logo.png';   8 j8 [- |' `8 [* W' P

  27. / F; r7 A3 [, \2 i4 j+ l
  28.     $Logo_re = './pic/test_logo.png';   : L% Q7 s( C0 ]/ g% T! }
  29.   _4 v8 Q5 V3 l8 H5 c
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    & u- _2 X" |# h5 [; N
  31. 8 ]  P# M" T* _0 a
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    8 V8 M! j( d- m& m1 X# b
  33. . ^  R* l) T: @: j* h
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    2 C/ F8 K5 m2 H" n% p( P: C

  35. ) k' z# k3 V: x. Q, I, d- p# |
  36.     $QR_height = imagesy($QR); //二维码图片高度
    / w, J8 Z" U5 \1 w

  37. 3 x, J8 k- ~& a/ c$ T& [, \
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    2 J- Y" f' n6 i" E! t1 g/ }
  39. ; P, L$ s9 s$ N) C- E/ n
  40.     $logo_height = imagesy($Logo); //logo图片高度# l9 h& x9 l2 Z3 u: N) i% x$ h" o8 k
  41. 3 `( \/ E  W1 T1 w9 {+ T
  42.     $logo_qr_width = $QR_width / 5;   
    % x( h% D2 V8 L1 Q6 M7 l& @8 m

  43. ! o) U  b; D1 [, O, J+ c# q
  44.     $scale = $logo_width / $logo_qr_width;   . Z4 R" q, [+ {9 e3 J1 n' d0 ?% S
  45. ' ^# {, {/ v2 x0 l7 V$ J1 E9 ~0 Y
  46.     $logo_qr_height = $logo_height / $scale;   
    ; L! }2 ]% r/ j, H! }
  47. . R. v" G1 [8 {) C8 J9 F
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    8 i) H0 K% Q3 i( j! C, V
  49. : K% Z4 K- H6 k" p5 r, X- q
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    + A0 k$ W: r3 T1 R% E5 A. v
  51. 2 j2 }. v2 h( v$ i4 X. y
  52.     //输出图片" Y' o4 I4 a& g5 f4 A( u6 ^1 }

  53. 6 p! U* {$ f# k2 N2 q/ ^, }
  54.     imagepng($QR, $Logo_re);* P4 h' g6 v9 V, E  ?3 @
  55.   C! d8 Z# {- ^- l
  56. }" c; q6 w2 ~# ^: X
  57. ! h6 I  R( X& A* k1 q& c' m2 Y, a
  58. - b0 h* {0 k6 C4 r& G  H' r% s
复制代码
3、qrcode_vcard.php (生成电子签名)! P% Q  p, @2 A% S2 Y- j# ~
+ O; z. w2 c% y/ ?% I- s, [
vCard格式:https://zh.wikipedia.org/wiki/VCard$ m$ B- _/ T5 I
8 y- {& ^9 \' b

  1. ( {$ v! g5 _) ]
  2. * Created by PhpStorm.
    . i. g* d$ ]; m- c
  3. 3 @' c7 S& {( |7 k+ D" R/ ?
  4. * User: user
    9 d; B) _4 I* R; o/ c9 J1 ?" s
  5. : V, {) r3 k# O  F5 [! I" T' \
  6. * Date: 2018/8/151 V) w! f9 h4 j. l# u

  7. ! X3 k$ U8 f* s" P0 J& N# Q
  8. * Time: 23:00) B" K" O: M8 B: j0 t' c" D8 i7 o) Z9 ^

  9. 4 P3 c3 x+ @* }  H% w) Q6 n9 ?( S  F
  10. */require_once "./qrcode/phpqrcode.php";/**
    1 Y, D- {8 H" k0 x* C
  11. ! E! C; x5 \, v# O7 l& i- h
  12. * 生成电子签名# R# V! r$ ~: ?; r
  13. / ]5 |% T4 @5 ^
  14. * PS;使用微信扫描二维码) c4 h9 z2 O6 h( f# E
  15. + I" F) w# ~0 ~, F1 q" h
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    3 @) ?& Y# r& d/ r* ~2 w! i

  17. 7 v! [0 D' l0 g& C% v
  18. $content .= 'VERSION:2.1' . "\n";//当前版本3 W/ z, p  S7 E3 b* t

  19. ! j) ~8 x3 d9 S' d. b$ K2 @
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    0 _; T+ L3 j1 G1 y- ^: m
  21. $ P& k" v* i. g2 m1 r
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称0 B1 d1 \6 l: _$ q+ |* t+ q

  23.   A% T  u0 P; B' G) m* h- g
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    - f8 C+ z! d* t, }4 ~. I

  25. 5 _1 L# a8 R5 [' C1 a4 Y
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
      V; C3 W4 P7 Z, {
  27. $ i& t. x0 x, _  S3 c
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址5 R) r0 x- R+ z8 i) i3 z/ R; {% u

  29. # z+ u# c' S% m8 q/ ~7 i8 z
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)+ B$ o8 K2 |# I% a# l/ H2 @# j! u" r# v
  31. % S% |! N7 p" Z( H, {9 l* Z
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话- y/ ~  l0 Z* M2 k! ]
  33. ' v/ |  g0 f+ ~1 _; R
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱0 S2 |1 Y+ G# F" V/ G1 M
  35. / g6 S, H. y8 w# H& j/ Z8 b. ]
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    ; A2 L: j! ~7 C

  37. : M' b! w* U+ S% Y8 L, z5 j5 O
  38. $content .= 'END:VCARD' . "\n";//结束标志1 Z$ X/ R1 x- ]- P
  39. $ C+ R- s. L5 C( O6 R
  40. QRcode::png($content);2 w$ B, \1 K. q9 h/ |% \& J1 s

  41. * t# N: g5 B5 r% d" d
  42. - v: i- B7 u/ M" U6 C1 p
复制代码
# l2 f! b- S8 f0 J+ X  c5 `) |
相关文章推荐:
) j* u3 L% j. A- y' ?1.PHP生成微信二维码实例, f, n6 j/ x; n" ~- r
2.php网址转换生成二维码
' p. q& M, e5 S9 g4 n' j相关视频推荐:1 {7 z4 r: v4 V" G$ X* Q
1.独孤九贱(4)_PHP视频教程
1 t( b/ U- m; K1 m' \二、JQUERY生成QR CODE9 Q5 b- s# T2 b( E! E
源码地址:https://github.com/jeromeetienne/jquery-qrcode& L; W7 @4 ]. w
* U5 Z: O+ ^& S
jquery_create.php
1 E+ N- o- u/ V1 g( S1 x. }# t: K+ I/ i: G; n8 E- C/ h( b0 D
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

5 c# H$ l, r% i; D& I- g三、PHP识别二维码# \9 a2 q' J* _# x+ D
1、方法一% l3 @; d1 ^& b  P
环境需求,安装如下扩展
( g# w, I( w! K; N( _- ImageMagick
, C" r) y  R) {: a- zbar! e  Q3 L7 @5 S3 o
- php-zbarcode! W; F) }; p( x; i- N6 J6 Z

" W0 L1 U8 k* i- C3 o2、方法二
3 p4 x; r% i6 @) s( ~PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% Z' f! z! E' X9 |
qrReader类:https://github.com/baagee/php_QrReader0 s! H; `  u. f0 f' o) d0 Q

9 G! W. B  @# R+ `4 F" s/ X+ e
  1. 3 a1 b2 T  O2 o: Y
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    1 a8 X% T+ k+ W2 O; a
  3. + B. J" B) M0 Q4 ^
  4. $text = $qrcode->text(); //返回识别后的文本
    5 u9 V6 I: c. `. @
  5. ' e2 x; q* V% i
  6. echo $text;
    , H' [/ g! p3 {% @: y! s

  7. 8 {- q* r& |% B# T% [% \. d
  8. 6 |$ @/ E4 X; l. G/ [
复制代码
% I" l7 R* s& T4 ?
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
' o$ d- S5 T% d' J" J
9 w0 Y$ u) {' }3 Y' N7 Y5 s" _. d" X* i% {7 b

9 D2 Y5 y* `/ \- z" O  k4 i: n' A

6 z7 \2 C' C  d5 d9 x: ]$ H( H) `4 W7 ^. `, k

  A7 D* O# d; a5 C% F$ m4 M2 e9 ^, g# r9 G4 j! j

1 A+ E7 y5 @# b1 V% M1 h0 W

最新评论

GMT+8, 2026-1-30 06:33 , Processed in 0.062200 second(s), 22 queries .

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