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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
: e# X' u- A) b4 p---------------------------------------------------------------------------------------------------
1 I3 D7 g+ Z5 v, B% d二维码的分类
4 U/ F# f* [" a; k5 a线性堆叠式二维码: [9 g  \8 ^  e1 I) h

' V# p1 g& M  a  k/ ^/ a. ~$ l+ i2 y矩阵式二维码
1 ]- ?4 u, N6 L3 Q1 P
  @: z, J  q; n; s: b0 a3 h( Q二维码的优缺点
& k/ k& v; Z; u4 S% i) d优点
  \% _5 r2 U* U4 K& [信息容量大0 R; e9 Q7 \. G. q5 M* [6 B
: p+ ^; f7 d( {5 I( D6 N! s8 q
编码范围广: c& ~+ i$ `8 \

9 y* K; w0 P& {: {容错能力强
! |0 E4 L/ R  n* U+ v( E
1 K" Y! ^9 m; B6 d0 D- q+ ?译码可靠性高
7 }: G& ^( j( J7 f2 Z1 }
% d2 W0 v. Z( U9 Q8 e$ Q* y可引入加密措施
( v9 h1 h/ z/ m( b5 l" {( G1 |8 m
成本低,易制作
8 P2 ^! H  G; @  Q+ M" P6 j* J; A  v7 A
缺点
3 b" }. h3 {8 I0 w+ |二维码技术成为手机病毒、钓鱼网站传播的新渠道
& P" }9 D5 {4 P$ k+ s- E2 {5 ^/ J
信息泄密
3 U& q7 C8 A9 u4 r( [$ ]9 P  h( T4 v3 W! }. m4 }" e
目前流行的三大国际标准  `1 _+ e! q- g: m
PDF417:不支持中文& n! b- ?# R! g* d9 E- q% y( G; b

) q, ?# N& M* L( y- g2 MDM:专利未公开,需支付专利费用3 U; d1 G" Y1 M) k6 h" i
( N) D) w8 u* e+ ?
QR CODE:专利公开,支持中文
1 l- R# X/ Z# Q3 i. x0 w) y. `' S8 X/ G- c+ I; I
QR CODE 纠错能力
- N. l7 Z8 Y7 hL级:约可纠错7%的数据码字
" q- j* R2 r  M$ y5 Z: }, ~
- O. f. S, X& @! LM级:约可纠错15%的数据码字4 O; j! e  h1 p" y$ P. a
& W9 H; G% f8 u, b5 l# N$ U/ Y5 v) i
Q级:约可纠错25%的数据码字# J8 |8 E! ^; u; U; J* l- u
& q, A: W9 F( f% x( o) w  i
H级:约可纠错30%的数据码字
# X- K7 r8 }3 a8 Q5 J
, S7 Q& a! R8 _# n* \3 a" Q8 N前提条件
* q: Q$ b2 {" L7 r+ A% x! wGD库
' z0 ^, y1 J; ?$ p9 g! B/ k- z: G, w8 e3 o/ p
一、PHP生成QR CODE! C; K! c2 k% W% _( T) c2 p
官网:http://phpqrcode.sourceforge.net/  Z8 D2 z* Y% T9 U3 k0 j3 y
3 }  A% q& F! e6 m# o! d/ p' `1 Q
下载源码:https://github.com/endroid/qr-code+ H9 x7 ]: B0 ~- S4 ~, g# ~1 c
! Y/ M8 R  n5 H& U
目录结构
( n8 x. v3 \7 c
# l& j3 @$ [6 @: n! r
2 f# e* l% v5 o. R) O1 a1、qrcode_create.php
. h0 m7 W+ O0 Ips:生成普通二维码% m  d" r* h9 }: n9 I* v6 k1 I

  1. 0 n! e! ?$ g5 K: V( Q7 K3 c0 q# E
  2. include_once "./qrcode/phpqrcode.php";/**
    % V% U  w, l/ ~/ j; W. A0 I

  3.   B" m% \, P$ Q% }* f7 W
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    $ ~3 H5 i; ]; m5 a5 l4 w: L- e' B
  5. 2 @3 F" y* B, b" K
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 R7 b' j, t- g# g' ?& K

  7. , _* h+ d- H+ x
  8. */QRcode::png("abc");6 U# e( w6 t- t8 d# B/ G
  9. , J2 u8 `7 k/ C. `
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    ' R' B3 h: e9 \

  11. 1 f7 F2 t  T4 E
  12. * 生成文件到本地
    - o5 `" s& \% v3 h# B' d& [
  13. - p9 l' m0 \0 [; x7 U
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ; e& i0 ^. `0 x- }1 B3 {

  15. & ^+ Z  I! ~. q* p" v7 p
  16. * PS:$saveandprint源码的p6参数做了修改
    $ N) T$ `2 `# ]7 p- @
  17. : O- _+ O! ~; |1 G6 x' Q) A
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    8 G# t  N* `  M

  19. # ?: o5 f/ Q4 `

  20. 2 a- e8 s$ _% z/ O
复制代码

0 @4 j6 z. s1 m% e; ?: F2、qrcode_logo.php
* O: Q; `9 m5 p- |. K9 r9 \- Ips:生成带Logo的二维码
  1. 1 B. R0 B3 M* C& j9 h
  2. /**  U9 u* L3 z4 t% k4 L
  3. 5 y5 I$ \  O# `5 M* E& }% X
  4. * Created by PhpStorm.
    ; X  `- M1 h) _, [) f4 v5 j/ r% E
  5. 1 h$ ?" Q6 r0 @! g' O
  6. * User: user* _2 n5 _; Y% w/ O+ Y! `

  7. $ c8 R- E7 i; t! ~& t
  8. * Date: 2018/8/168 K' l  g4 ^! d/ A6 X

  9. & P% Z1 x8 |6 g& B  r
  10. * Time: 10:43# G7 S( |+ Q2 g/ Q) ~; K+ H
  11. + e0 s) ]9 X" x/ w. y. P
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";  O) q0 ]) c( j# Y5 h: x$ r  S
  13. 7 l/ y% l' `/ W+ a
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    4 P1 _  d) {+ h! N1 k. p8 a3 Q# A
  15. 3 ~9 g/ m. n- E
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    $ O3 U; T$ r* C2 _+ ?. ]# R& N
  17. 8 u" X1 |/ {& ^& k/ i
  18. $margin = 2;//边距4 j2 a8 f% B: w/ O" @
  19. 9 c/ f! |0 h& t, O# i: G4 ]$ q
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片) ~$ i$ o, y# Y$ J; W* R) D6 w1 H
  21. 6 k0 p$ \! J3 o9 f% T3 \* x
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ; Q% N' o7 R3 Y- B. Q# a. D$ p1 m
  23. 7 E$ G" g! n5 z
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    2 C! W+ x* \7 R* P0 X0 V
  25. * ^- d3 j9 u- @0 V+ h) [3 S
  26.     $Logo = './pic/logo.png';   
      G( m" f) }  D- E9 ^
  27. 3 s& F$ @1 q2 N% L
  28.     $Logo_re = './pic/test_logo.png';   
      F7 Q( `" T. N9 V
  29. 0 ?) l; [+ f" i+ v
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    0 N6 \% `# O: B. Y  Q" u
  31. ; W3 y$ k9 d4 ?0 E8 W
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   . |8 N. c- n( i+ O6 T) G1 }7 c
  33. 7 f; v/ Z1 a/ h# q) p
  34.     $QR_width = imagesx($QR); //二维码图片宽度& c. o* P  u9 X" s( O
  35. # l( m! e4 A! Z; ?; Z7 ?! x
  36.     $QR_height = imagesy($QR); //二维码图片高度
    9 i' n) K" v  B

  37. 2 ]( ]6 R3 _: ~2 `" Z2 j3 d& S' T
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    - O6 T, K: \7 s4 z# A2 `

  39. 3 Y$ L8 w$ `$ K7 @# o5 X
  40.     $logo_height = imagesy($Logo); //logo图片高度
    1 T7 V6 {, C; Q" B& W2 |; c
  41. # R9 x& z6 ~' \' [
  42.     $logo_qr_width = $QR_width / 5;   
    7 I* X0 o/ j+ M: B, c
  43. ; J; _9 z9 U" w: W
  44.     $scale = $logo_width / $logo_qr_width;   5 l% I3 f9 ^8 ~& x

  45. * u/ `: e( w3 g4 f$ \4 m
  46.     $logo_qr_height = $logo_height / $scale;   
    1 a, {; K8 F4 n) {! d7 f

  47. & x3 Q2 Q" s7 o1 z8 w$ [' s. W
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;4 q+ G' I: l8 n

  49. & X( q" L$ i8 J; f( Y
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ( v6 h' r8 Z5 _! w8 I

  51. : y. h' i7 S: N; u9 a, ~, W
  52.     //输出图片! p& I& h7 ?( U8 s$ U7 s

  53. 4 H/ G/ @3 j8 `$ N
  54.     imagepng($QR, $Logo_re);
    % o0 E; y- c9 j. k) j' |- T& L* x0 g
  55. 0 z1 i( b3 P4 L* A/ V8 z
  56. }; w: W6 X9 Y' G" `+ c. t6 l/ \

  57. ; H! S* O6 _8 g

  58. 2 a/ Z9 J8 o, }$ m
复制代码
3、qrcode_vcard.php (生成电子签名)
2 @  M; S4 M) N! ~6 M& ?8 R, j( _$ H
% M2 _6 e: f+ Z0 @9 }vCard格式:https://zh.wikipedia.org/wiki/VCard
/ t2 Q) \  y% N- Z/ ^  [( t3 W$ i/ m" m$ [# r" g0 _5 I
  1. ' B! _. Z! y' v: x/ G$ v2 s2 |& N" l
  2. * Created by PhpStorm.6 j, L& t8 u# a3 \) c3 l
  3. - a1 l: P4 X7 }5 p, Y: E7 a4 z
  4. * User: user* f9 W5 P$ }( O, I  z

  5. 3 i5 D& t9 u) \8 ~- V
  6. * Date: 2018/8/15. p( L8 N" ~3 `! c7 h% a
  7. , M: P( ^. V  V; \* J" F
  8. * Time: 23:00* O* ^3 R, t( X/ C4 W: s

  9. 4 w- D1 I! G$ _& X0 Q
  10. */require_once "./qrcode/phpqrcode.php";/**& w5 \; O% F. A  G7 g, [% d6 s7 g# s

  11. 7 Q- y8 r0 p$ U! H
  12. * 生成电子签名
    5 h8 X; ]/ p8 @" y" ^9 y7 e
  13. , C7 a( i/ t/ B8 x$ j
  14. * PS;使用微信扫描二维码4 S) p4 |4 ?; s

  15. 7 C! X" a/ E/ c8 z, ?
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志9 [) `" K7 _* q9 y: f$ S# A2 t
  17. # M2 K3 F3 a  e% ^5 a" u
  18. $content .= 'VERSION:2.1' . "\n";//当前版本8 h* W8 Q! F# M" ?5 N9 r) L

  19. - o/ j' v5 {3 [! F# D, x
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 b( b2 d$ S+ P+ i+ ]* t; v

  21. 8 C$ ~* s" o7 t4 k7 g. R0 y- {3 f
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称& o% |+ @1 g% J$ [2 n  L8 z
  23. ) j5 b$ ?8 X- t3 B: v! N+ a
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    ( M$ z- E" V/ _
  25. + i7 r1 ]. N7 u5 n
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话! X2 J: y: I* j" V1 r5 Z
  27. 2 r: n% [& \9 `. \$ P2 `
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址, {$ B4 u# {( B/ q9 t
  29.   i0 T, v$ n( D/ x
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)3 E( `# ~- ]  e# r/ j
  31. ( p8 O( d( S+ Y- {! }7 W+ O7 h. |
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 K( C2 k7 y* y; W- u( `$ V

  33. ; m+ X# i6 M5 z, L; ~8 P1 s
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    / o" S' i+ I. ~) `0 H

  35. 3 R: C9 X1 K, t; G
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    5 v' h% L! m# B. b1 z

  37. " e: S8 b* g. Z; t- r! l$ G
  38. $content .= 'END:VCARD' . "\n";//结束标志
    & D/ Q% i  ~) W( F7 U
  39. $ g8 C7 v% h' k/ r6 ~4 L
  40. QRcode::png($content);
    & Y& R7 N* @, x' \& {' E
  41. 4 ?4 _% r' L# s# R2 A* G
  42. 5 B* c4 Q9 e+ p  t1 c) M! p3 n6 A( o
复制代码
3 z* b) y2 E) n' M& u+ l
相关文章推荐:; h, N- A. O$ {! }
1.PHP生成微信二维码实例" j9 h9 F( p2 ~, K
2.php网址转换生成二维码
1 a; u# C9 o% }' s相关视频推荐:
; a& v9 N0 Y4 m! b1.独孤九贱(4)_PHP视频教程  ]! I2 A* ^9 ~
二、JQUERY生成QR CODE5 S, I  F5 b* U6 N3 K. E+ S6 ]' h
源码地址:https://github.com/jeromeetienne/jquery-qrcode/ k7 \* q; c3 @
- ^* Z8 z! m% g" h3 [4 l5 m! v
jquery_create.php
& l7 v3 C* l0 l- w' ?' ?# w4 l) g9 @" |% p
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
' z% x  T0 R, G! m! Y# J1 s
三、PHP识别二维码, m+ l3 ^  t1 m9 |8 B
1、方法一
! g6 L& c2 [. ^  n2 U( t环境需求,安装如下扩展) d' F4 g$ E2 m0 @& b" Z1 B
- ImageMagick8 W( P) y) p# N* U# C: t) Y
- zbar5 G* L$ v5 X- s+ @
- php-zbarcode& X9 F! `- D4 B' E

% n0 s& O7 Y" c# J2、方法二
8 q* \% s, Q9 f% c1 RPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
) e2 o# v& `/ ?qrReader类:https://github.com/baagee/php_QrReader  Y6 b- A9 b, p, @0 o0 p; s' b
( c2 [# c9 j8 U4 [7 Q( v

  1. 7 N9 ^7 B& A4 I1 ^. [5 M. @
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    1 g5 W7 p6 l+ l4 J0 A

  3. 3 ~) x  E6 W+ v3 P5 f
  4. $text = $qrcode->text(); //返回识别后的文本
    7 I0 P& C( H* F4 y" N+ a+ `

  5. - S- z. D- [; I$ F. @8 U$ _8 E
  6. echo $text;7 H$ j8 i" A9 v) n& L
  7. 2 ^5 }6 A1 b/ P- r* N

  8. 2 B. S9 r. g4 h( B: x% q
复制代码

9 Y4 ^* D) U! D- u链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
0 Q) D4 f: K/ ?- b: H* T9 F* s; Y& B1 r, p
) V: [, M" u0 c/ w  E. M

2 {: L' O6 q( D5 p. Q; Z* f$ ~. Q. t9 ?1 k
# e+ b& H7 Q& W9 v1 \" j4 H. ?1 i
$ Z) s  G) J0 a6 V+ S

# Z7 M2 B" f8 G' P
( U1 K& h9 }" o$ I8 i0 l: m0 M: a  @% z( u/ F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 11:45 , Processed in 0.065428 second(s), 22 queries .

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