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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
) |, d% d4 Y6 j  M---------------------------------------------------------------------------------------------------
+ l" t7 X" x* Z, {$ ^0 J& A) W二维码的分类
- o' O* p# Q0 P线性堆叠式二维码
% b( ^( t; ~' E1 z& d6 c+ c( H1 P. e
矩阵式二维码
/ ?# G8 C2 w$ I: d( M  Q, H" O" `
/ O8 v% N8 g; \二维码的优缺点
: o4 \5 y/ t# I0 g. Q  W5 @优点
- c. j/ [' v$ l信息容量大
# n" l9 ^( b' d& ~- R) K  z- \+ G5 T# q" Q3 C( ?
编码范围广
; z0 O+ M2 j; ^. o* S) @# c  Y; g' W- z
0 B  j3 K: |$ V容错能力强' F4 M& N8 d3 O- a
4 l& O3 [( M/ i0 P5 w
译码可靠性高
+ H6 H3 ~$ T  |+ a) T: r( b) V$ Y" D
, f/ O( J) D( y" e5 S可引入加密措施
' b9 |* t% J) ?+ Z& c
8 ~( X5 S( M5 G: g! d- T成本低,易制作
0 u5 g* N# i. l; g. @* j
" Z! P8 c8 p1 T" R缺点
) H8 x( B' G5 ~4 r9 t% E6 v4 y9 d二维码技术成为手机病毒、钓鱼网站传播的新渠道
  M- {7 r  Y" P& R" F6 [: R7 M& Z
- o  z% A+ f3 |信息泄密
$ ~+ J( M( g* t0 _! h4 D+ ?% k% T9 _
% }3 L/ _% G- n7 ~目前流行的三大国际标准# |: _: F/ R+ F% p0 |5 k# O) K1 q7 Z
PDF417:不支持中文& B9 k0 E3 K# `1 a3 x

/ N  e/ @) R2 T& ~) w# HDM:专利未公开,需支付专利费用
9 B  {/ i& m+ W: Z6 c
, C5 f% T. r" vQR CODE:专利公开,支持中文
4 v4 b9 D% V# B  U" B
! z- B; L$ D; W  A: GQR CODE 纠错能力
9 p4 e0 h! ^+ jL级:约可纠错7%的数据码字- |' Z! ?6 I+ }. z# D; f
. I& b1 l- d# w' U/ P" ]( C
M级:约可纠错15%的数据码字: f/ @" P3 E# ?5 }+ o9 m
. ?# e, V4 `7 k6 y5 J# F
Q级:约可纠错25%的数据码字
! H  o# I( I! k( ~. {& v
1 i  k. V  d& D4 n2 ~, vH级:约可纠错30%的数据码字
0 h  }, t' E2 v+ _, N6 o2 v9 I/ g9 ^+ h4 q6 H( T+ ]* W& [# J/ Z2 J
前提条件2 @0 @* i! F2 ^  t4 W
GD库- v% `! h/ a6 K& p: Q: d: a

) D+ r( o0 `) ?" c, l8 s$ t一、PHP生成QR CODE
3 i. Z* x9 k5 R! A官网:http://phpqrcode.sourceforge.net/
$ Y4 e- f1 E( E' m# n) S6 n4 O0 \! g2 }
下载源码:https://github.com/endroid/qr-code
" y* j2 b$ i7 H6 m& R  n: \! \; s/ d, E- Y' W
目录结构4 M( C2 {9 L2 Q4 I) C

- K5 c0 {: T0 N7 i! H* _6 ~0 U% w% P. M6 N* q: @
1、qrcode_create.php7 ?, e8 G; b+ O6 l; M
ps:生成普通二维码) C+ ]8 `; p1 D0 B8 ]0 E. W

  1. 2 y, c  T! F. L7 o. r
  2. include_once "./qrcode/phpqrcode.php";/**
    0 P4 D' @$ n2 K6 @3 p2 h# ^* C

  3. 3 @  g/ B( s7 [: U- w1 U( K
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    * E  ^8 ~  k; x: a  w

  5. * [1 ?  @) m' k9 w% N6 k
  6. * 在浏览器上直接生成一个二维码(内容为abc)  g3 n$ ?) Q% D& Y% |% L
  7. ! ]5 a# ]# U  N
  8. */QRcode::png("abc");) x  T/ }$ m! [1 N
  9. ; t) U" h/ Q* U3 ]2 U; ]
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    2 Q6 X& ]" |6 U# P
  11. ) Y7 T" A( t1 P0 b9 @: N
  12. * 生成文件到本地7 Z8 K) }: M: I/ w: d6 {

  13. ; ]8 P% F: a% G! c4 M$ P
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    2 P9 f  R5 V0 l5 [, R
  15. ! B2 b2 {$ U( y* n& j
  16. * PS:$saveandprint源码的p6参数做了修改
    , Z, H9 C" n7 U( j0 x. p" K+ l

  17.   X& w1 X7 s% }/ L; O2 ?1 N
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    * A% j  b1 K/ @$ y

  19. $ M9 E$ U$ ^; _6 X8 A, S# \

  20. 6 D# F" u# `6 r8 K
复制代码
4 W2 g8 h7 e2 h: F/ m8 _1 a
2、qrcode_logo.php9 {  l8 i! |# U
ps:生成带Logo的二维码
  1. ( R2 x8 H# O' S$ m3 q4 @  T
  2. /**' W+ n. O# ]. P( H( E6 T9 j
  3. ! |2 J  g9 ]9 n: Y) w5 R- f  g( {
  4. * Created by PhpStorm.3 j% j: E0 R& [" t+ Y8 [
  5.   I& [+ x. h% T# z( R6 h
  6. * User: user
    1 I1 L) l% {% Y0 Z$ V$ W# m. H
  7. 2 x5 d- O/ _9 r
  8. * Date: 2018/8/16' A1 R3 p( ^. q4 H5 }
  9. : j; m0 w  S& p0 O. b3 h
  10. * Time: 10:434 _' E" P$ _6 N' @% K. B7 Z

  11. , d: }. i) I2 I$ S
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
      h5 E; K1 {1 C5 h! ~. \$ {

  13. 0 d( R$ {, {/ F( |: C' z, \0 ^
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    5 h% J  t: V9 }9 t

  15. 6 I$ K( m2 L1 G9 l- D6 r
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    4 e! S8 Y1 [( m& {; a( }
  17. " m6 W' H- E2 _
  18. $margin = 2;//边距: S& o+ q. H3 y
  19. 9 y( _5 e5 S$ x9 Y
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片  T0 ]! m; K1 k5 a  E/ ]
  21. * V5 ?4 m- l2 M: O1 }9 H* _/ O
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   2 u- Z$ {+ B/ z. @5 |( d0 A

  23. % b9 ?" @* g/ ^
  24. $QR = $picPathAndName; //已经生成的原始二维码图! i; O% \  f+ M% ]5 [

  25. 6 M- j$ r2 _# K0 g% o5 Y- {
  26.     $Logo = './pic/logo.png';   
    0 G1 b: N) c; [- t& e
  27. 4 }% K2 E( d. |, {5 h- u$ a: ^7 X
  28.     $Logo_re = './pic/test_logo.png';   . k8 l* X  r- v3 H/ U
  29. ) S* \8 B* Z1 G4 [+ u' y% V1 F3 N
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   " d- l3 ?) K9 N5 J

  31. 2 q3 ~2 U$ m1 X; {
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   6 [* {+ ^6 Y3 l; M, ~

  33. 2 @  H9 ~1 U! H9 i) A$ Q. G6 J- B
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    7 k8 g( S+ i7 E) N
  35. 8 o8 @" A3 C: }  Q
  36.     $QR_height = imagesy($QR); //二维码图片高度
    , s. C; I$ A) O. {2 Z/ k

  37. 4 I* ^' M3 E5 w0 P2 k8 G) s
  38.     $logo_width = imagesx($Logo); //logo图片宽度& L, T0 Q+ Z& i

  39. ; z0 ?, l# U+ B& I6 Q+ D0 w7 ~
  40.     $logo_height = imagesy($Logo); //logo图片高度3 {' R1 b! n2 x* s) r

  41. 9 A: D( t# h& p4 T- W. a0 s$ c
  42.     $logo_qr_width = $QR_width / 5;   . H4 k' j& k$ K" C+ M% f' V
  43. ; L% A$ d9 c3 A1 O* w- B
  44.     $scale = $logo_width / $logo_qr_width;   
    # k2 D. i, T* y6 a! u" a- A

  45. ! L# Q! w7 d+ Q' {, V
  46.     $logo_qr_height = $logo_height / $scale;   " a& }9 L+ R  L2 Y

  47. ! S) ?5 L1 f# k; C$ F4 `6 h
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    $ S% |5 _: z' q' B& c

  49. 1 d1 I- ~1 V/ m3 K1 e
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    : \6 R8 T9 \! G% ~7 s, _. a
  51. 9 P# i4 x  g  O. R4 r2 o
  52.     //输出图片
    1 g$ @- c1 T/ v$ H* Y! P" Q' e1 x

  53. 2 l5 B" ?% R+ K
  54.     imagepng($QR, $Logo_re);$ n; l( }2 u4 @' Q
  55. ) `5 o8 e" `5 j6 w5 W; t& ~
  56. }
    3 c6 u3 w3 @3 _$ ~/ @, M
  57. ! A# y$ d; M5 h; Z
  58. . i9 M1 p/ Y" a% F+ y/ @6 r
复制代码
3、qrcode_vcard.php (生成电子签名)7 B- U2 D' ^/ Q" a) d

/ A4 C# S& m; _3 XvCard格式:https://zh.wikipedia.org/wiki/VCard
! L. p5 g" R# G& H# U0 j
& x* n+ R! X7 s  o& P3 D$ `' `

  1. . E7 L1 g& V2 }" U: [
  2. * Created by PhpStorm.
    " d* d  l% F' r# c4 a3 e% A" N
  3. + ]/ G/ H. m, V( x7 ~  u3 K  S1 E
  4. * User: user3 b% u; D% c4 ]6 _
  5. - d1 p" }1 l. b4 }
  6. * Date: 2018/8/15
    8 |- X0 }% [/ [6 Z. i6 a
  7. , m' m/ Q# [% A3 S! f
  8. * Time: 23:00) M, q; O: n1 Y7 r9 ]1 M9 j

  9. 0 o$ T) h  X7 n' k/ j8 N% @6 f( _
  10. */require_once "./qrcode/phpqrcode.php";/**2 T* A) J, x, ~, W+ r! {! R1 l4 _
  11. + t7 W  _- i2 w) Q8 m2 ?
  12. * 生成电子签名
    $ f4 H( j8 x( o2 E! g+ T/ H

  13. 1 w- J6 }) {. t3 b! E& L
  14. * PS;使用微信扫描二维码* H* t/ N4 l# |% l9 j1 ^& I: G

  15. # ], k$ ~1 ]! {4 b; b2 n" x
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ! U$ I5 Q, m& }0 D* V" S% }
  17. 9 f& t7 R; o- R6 E( F
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    1 l7 F# T! {  [9 r3 ~3 W- ^

  19. 7 X; r8 `% |! x
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名2 P' l: Z* U4 j- [1 K% Z$ k
  21. ) s8 y7 B4 H$ {+ j! @1 ^
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    8 Y) y6 q7 p5 u4 o. s
  23. ! V) P5 H" s6 Z7 t4 c' ]
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 k; {+ V1 i. e1 X8 y
  25. : V* i6 J( l5 v' ~6 v, L' D
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    1 Q# t4 T# ]1 }: I2 V3 f0 @, \. w
  27. ( }& Y6 [1 Z- I0 c: u9 Q
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址; a2 p( {; x( B" b" l3 i* p

  29. ' _5 \$ @3 }5 U" r
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)$ s0 e3 O/ P" K& x/ S

  31. / T& D7 @8 y9 {& q# ~3 \
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话. k1 W$ W+ R5 _( X- E" [
  33.   c  @+ V1 w( d( e1 T& h
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ! B' H* H. q( i5 D. [; [1 L& @0 c& _

  35. . z& v# o3 b6 p6 D2 M! e
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页2 \" H  y5 N: A6 Z$ x. p( s

  37. 5 O& v7 o0 v9 g" y" T
  38. $content .= 'END:VCARD' . "\n";//结束标志0 A* M! p- v/ T( D( q  e* I( d

  39. + ^# r: ]$ ~7 y' p9 |0 M
  40. QRcode::png($content);0 l. o8 q" S8 G- w! _

  41. - k7 G4 Y* a" a% S" m7 I7 S

  42. 5 S* f0 `5 M& j% s
复制代码
* x) R0 t! G& m) F, B8 b
相关文章推荐:
0 B( Y4 D( L' v( ~& W: D7 P1.PHP生成微信二维码实例
; {4 [1 k4 g' ?2.php网址转换生成二维码# H( F! ~' R) N2 ^
相关视频推荐:& R0 w( i0 G; i! i& N
1.独孤九贱(4)_PHP视频教程1 [5 M" |0 `& f; q7 l9 b# `/ z
二、JQUERY生成QR CODE/ l5 }  {9 b1 e; y; A4 |
源码地址:https://github.com/jeromeetienne/jquery-qrcode$ ~( V( X$ d& O! R

7 i2 O1 ^: S5 }. ajquery_create.php2 V4 L% O  j. v3 [3 M. \, P  e0 ^6 _

/ k2 B4 C5 J6 x( r  r4 K
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

! [. t9 I0 @5 n+ l& p三、PHP识别二维码
6 a* g! W4 o( U1、方法一
' ^2 u& [  C) |环境需求,安装如下扩展& g5 ~/ ^+ i1 I
- ImageMagick
9 s5 U" V7 c8 D. H+ [; M- zbar
9 r/ t0 ~# u. A) J2 i# f- php-zbarcode, Y! R6 J" @9 z8 e2 p" `/ u$ U/ L( e

$ `/ w4 S& W, Z5 s- \2、方法二8 O; i  z. F0 o7 Q2 `8 N
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以% a- u4 Z! M# [1 E
qrReader类:https://github.com/baagee/php_QrReader. u5 w; t* p, H3 {8 K1 j; v/ R

& U: r( E  m8 u; q( t# M  {+ \

  1. $ J& J. ]6 `& P
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径/ A5 X7 ?  z; O

  3. 9 h. b: f" c; V- }
  4. $text = $qrcode->text(); //返回识别后的文本
    * E8 O; {8 \2 M6 _# A; i+ }

  5. " H0 g7 q9 z( H  l8 h( f, H
  6. echo $text;
    ' i+ c& {0 n3 l6 ?1 {' k# {0 I( n
  7. 5 c  X/ @' a- ~" \, [+ h

  8. 4 K1 J# Y8 O! f( ?5 b# m7 }4 o
复制代码

4 \* |9 e2 i, d: i$ h- N# @链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7( x( f) I( s" X' C

( i+ @2 u6 g+ S6 T
) e% ]8 r. Q! o  u/ r
+ [9 c4 l% B3 Y# S. g8 {; K7 H3 A( X
% W% h0 B. u/ H! I7 `
+ m# _3 b- x! f

% `' t) u' Q- u0 t8 T8 z3 P3 O9 r/ S: p. R: f( Q  ]% j3 ]

9 x& ~: O/ w8 m+ g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:23 , Processed in 0.063629 second(s), 23 queries .

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