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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。  e* F7 Y  ?& G- F6 v
---------------------------------------------------------------------------------------------------
! x9 |. d9 w$ S1 u- n5 S8 Q二维码的分类( N  s( j, s0 S: }9 X$ J
线性堆叠式二维码2 ]* }' P  k6 R' U  o
! F; o; c: x- v. x& N
矩阵式二维码1 _( ~: M7 B3 u. e7 U; n

( ~0 a* U: [& U* I6 L% J' Z二维码的优缺点
; g3 H3 S. C& B优点
. K- t/ o# q. p信息容量大
% Y- e1 q% f' @7 }
& J, l3 V5 I9 F" \编码范围广( f7 n9 v6 P6 u& I3 L7 T0 I
5 Q& I3 f& {4 Q/ t0 h$ ]
容错能力强
3 M+ k, b- {5 m$ ?- {2 @' G5 K1 [7 V
译码可靠性高. o( N+ U  c. S- b5 e2 R

6 }1 L2 r9 U5 d+ _4 i, D. @可引入加密措施
" a7 S6 b) e% y0 i2 b! N3 h6 m
/ \- F% ]1 l$ F1 n' X; h/ @- v成本低,易制作
# e5 y7 U4 f; D0 @4 v' K
- b# y+ q' L6 O4 i缺点
3 i0 ?. S* y( a- X( u二维码技术成为手机病毒、钓鱼网站传播的新渠道2 `! P% Z, \( H

% o5 n/ u1 F7 p3 z信息泄密  U: n+ e% {' d# x/ T% U& o

! |; Z  N7 ?; W目前流行的三大国际标准. H2 Q! w( o. \8 ]3 U$ B5 S
PDF417:不支持中文% Q7 S6 p; a! j* R: L
( R( ^# f  t; z9 E; l. O
DM:专利未公开,需支付专利费用
1 [- }  u5 ^( |! L- S: E# D  X1 f$ L& k, V0 k; m& H
QR CODE:专利公开,支持中文% S4 b" W, L- j

3 t5 t) O6 H) cQR CODE 纠错能力
7 X2 s  A( m8 s7 m2 s: e7 mL级:约可纠错7%的数据码字7 r: p; i! H  X. h% w
7 V; T) S' |/ a  N6 X5 ^
M级:约可纠错15%的数据码字
+ D, b. }0 J8 X) f0 Z& B7 Y8 B5 r8 X$ C1 B
Q级:约可纠错25%的数据码字" c3 _) f: ?; a. W# F

! l0 m! g7 Q5 JH级:约可纠错30%的数据码字2 ?9 H5 h; j* Y9 t

6 _( ^4 r: A3 u. `: ~% G/ W3 w+ r前提条件
( v1 M0 |& S' [' p! K$ DGD库; X! c  }% b; I' e, P
8 s7 Y; i' q9 x  v( n# E
一、PHP生成QR CODE% V6 A0 U0 ]) B9 t% g
官网:http://phpqrcode.sourceforge.net/- n7 o9 a. K' q6 J

$ Q$ u3 O2 k! P& ^  U/ F# F2 ?下载源码:https://github.com/endroid/qr-code- B- V2 M: o2 x1 R
. f' o- a9 X7 K' ~2 |0 K
目录结构
; `& N! I; @  R! `3 @/ X 6 i0 y% M: z2 m7 g1 [5 K& D/ j. @. U
- c+ w9 P( p, I* F  S
1、qrcode_create.php
' w5 A0 Z* B2 \" }4 ]ps:生成普通二维码
/ M, U& y; U6 `

  1. / {$ g8 n" Z1 Q; }
  2. include_once "./qrcode/phpqrcode.php";/**. z2 c( @2 K; d# P
  3. ) w' s, L) w9 D2 r$ ^6 W! \4 |  w
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径  M. L* C4 k& T3 _3 m& G

  5. + K6 b3 ]- v0 W( I$ u
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    4 w" H& N+ e! o

  7. # y7 N' N! ?+ T( ~" v
  8. */QRcode::png("abc");
    3 k, ~3 V$ X& M' _% ~4 [% @% V

  9. + e: H# Z$ v6 I. T1 i; s+ b
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**, v4 S$ t; ?4 D# Z
  11. 8 s1 o- B( o3 R
  12. * 生成文件到本地
    - s3 n2 `" q9 u" d  R, U' m

  13. . ]2 Y1 m' X3 R7 t8 V1 ~3 \2 x* I- z
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    * R1 [' N: H& Q" ?
  15. " h, Q8 G, Y6 P# ^" f. K! l
  16. * PS:$saveandprint源码的p6参数做了修改
    % a; S: \: d! d7 y2 ?1 V

  17. ( d3 `8 ~1 N; Z8 d
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    - A5 E+ X1 c, i0 L8 ]' ^5 g0 l9 |

  19. ) o2 U. g, H0 V0 b- Y; }

  20. * l7 n2 ~1 p( h) P
复制代码

% z8 ~2 U$ F7 N- {2、qrcode_logo.php
% I7 i" H0 \+ ?0 ~  M9 eps:生成带Logo的二维码

  1. + V" ~- Y4 E, u
  2. /**) P* H( j% g* S/ D5 i* s
  3. + ~1 Y+ v9 [1 w5 T
  4. * Created by PhpStorm.
    ; t! {! s& j, \$ K5 d# J
  5. ! `& b; ?9 V! O# S! I
  6. * User: user/ b  `0 C" m" f! V% A
  7. * p1 {/ C* A9 E
  8. * Date: 2018/8/16' D; E+ H5 t5 v5 f0 F

  9. 1 O: o# Y: u9 d7 q/ R& p
  10. * Time: 10:43: Q! Q" _& H8 F" O, C
  11. " i# v9 _$ D6 N& w) b, d
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    - Y0 _. \; O& o8 j3 O( H

  13. ; Z. V, X% Y. e. K8 |- c
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称* `, D1 t# i3 M( }* Y3 L& j5 w. S
  15. . k2 r9 D- f4 ?3 ~# G
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是) V4 f/ }( B, g  Q
  17. * A+ E8 @' \: z! F
  18. $margin = 2;//边距2 |2 o# D- P) ?  D" H' s

  19. 8 H" h' _" ]- T
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    * q8 M, i! M- |, R
  21. 6 `* [0 u& w8 n& j2 c; G
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   / D2 ]1 S' o9 s
  23. , m, y3 h% F# b( ^+ s/ C4 p
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    7 I  w  g. r, a

  25. $ h( p) X# Z& J/ I
  26.     $Logo = './pic/logo.png';   
    6 g- v: I; ]7 q2 X: O( C/ W

  27. 2 R& f& P9 T# ^* Q! a$ o
  28.     $Logo_re = './pic/test_logo.png';   / ~% Z  W* a% A

  29. & ?- O4 T- x" H# n* }( s
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ( g. ~: l7 T9 _# L- q
  31. ) t7 h0 \+ |3 Q; G! c! j
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    0 a0 K; j* _" e8 N- U" F

  33. 1 o  K& c- p8 f
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    9 N  e6 a, N0 Y# ^& {  U, D9 i) {

  35. $ |- L, Q+ g' @0 @
  36.     $QR_height = imagesy($QR); //二维码图片高度
    * e% k) X- u+ I# n
  37. ' z' [0 `8 Q- y$ I! O2 [0 l
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    - g. T2 x2 I# O. \) g' b
  39. 1 }0 z* P) L! K3 N0 c' m( O! w9 F
  40.     $logo_height = imagesy($Logo); //logo图片高度
    ) [. _' D1 O8 j# q$ `: d
  41. 4 j% o) [2 H* U+ v9 k
  42.     $logo_qr_width = $QR_width / 5;   8 I8 |0 b$ g/ Z; L8 J

  43. 7 ~& W9 p8 y4 o; |6 H' _
  44.     $scale = $logo_width / $logo_qr_width;   ( p8 x+ @' `, P

  45. 9 u4 B8 s! U7 S0 t+ B# \/ s0 ]
  46.     $logo_qr_height = $logo_height / $scale;   9 c) Z; b6 e  {; }
  47. 5 K- c9 j- D6 h) e  Y) b5 j4 @
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;) B$ |4 N4 L" e6 w( Q9 u% w

  49. / e0 r- _+ `2 p! ?, n+ e+ ^
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    + R( e2 a. \9 X

  51. - F( Y1 b1 ]& D# c
  52.     //输出图片# r3 i# b; Z. _( v" j! K/ B
  53. , v9 U: _% f; D) l( r0 o
  54.     imagepng($QR, $Logo_re);
    4 F, \3 [+ E1 [
  55. * b. B' Z. A* Q' ~- v3 g
  56. }
    & ^) C1 ~* Z; N. B

  57. ' O) A" T' t9 I4 j4 j: z9 {* }; N

  58. 3 x. _! j" d. R1 K
复制代码
3、qrcode_vcard.php (生成电子签名)+ Q; g3 o+ r5 a# C
4 d& |" t! O3 J
vCard格式:https://zh.wikipedia.org/wiki/VCard+ u  K! i6 x' \; q& M+ I( s! r% q6 _* N
" z' o* s/ P7 C. C, y* P  n1 ~

  1. 1 d2 Z0 Q) Z) F
  2. * Created by PhpStorm.4 q' j6 N( Z& n) |+ @! l; Z6 u6 {
  3. 2 a; i6 C, p3 {- A$ `" q* A
  4. * User: user3 G# L0 u& K8 Q

  5. : c" N" s; G4 {+ \# H
  6. * Date: 2018/8/15
    / ~0 l3 f4 P9 d$ `% p$ ]
  7. 8 K) e# x! [: F/ M) M! |
  8. * Time: 23:00
    5 Y& ~" v- r- {) O9 ^

  9. 5 o6 ~1 d8 t/ b4 R0 _# j' F" B
  10. */require_once "./qrcode/phpqrcode.php";/**  I/ |6 A8 k5 Q; Z, S: ^* h. o
  11. & r4 d3 K  E; I, _; s
  12. * 生成电子签名
    ; V! f7 K( F! y
  13. 9 W/ g/ f+ k4 d* S
  14. * PS;使用微信扫描二维码3 p2 z; w' H# u2 e8 n6 V! E; I

  15. : ~6 m3 d2 A. O2 d  {
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志  Q8 ^, @( Y- j7 X
  17. & I. k: [/ m) C3 Q- f$ R: _& N
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    % i+ p6 {, u8 d$ ^
  19. 9 J9 ]* x! N  f7 Z2 x( J
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    * Z( y, O: I6 {( ?

  21. 9 k- |& N8 _: Z1 E
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称  O3 U$ I! i, v1 ~

  23. 7 O# a% I% E  }# }9 e
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    , _4 C- o3 i$ P3 o8 {8 \) U
  25. : M# O& `( C/ H& W) Q$ W
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话: B6 o% ]( l9 J

  27. ( ?- Q; U0 w( |* [/ t/ L
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址$ C1 a7 Q, D) ^3 ^- R9 J0 E
  29. 5 s4 S$ U- Y& p) L. c
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    $ r( h8 k* @) q, s( d
  31. ) Z8 e1 S" G+ Q* A
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    5 Z: _7 S$ h4 T5 w
  33. # y1 y) r# k/ U/ y; M! Z; |
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱8 H9 S( E- l! u5 _; B# ^+ J
  35. 8 a) o" u( ]. J6 T' `7 V4 m! Y- M
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页  b  j4 I& }. X! n* Q9 K

  37. , @0 q% c8 n+ o
  38. $content .= 'END:VCARD' . "\n";//结束标志8 v( w5 |3 y+ p

  39. - Z7 d/ r- g* \& d4 b* J
  40. QRcode::png($content);
    ! W# W  n9 Y2 j% v; E0 ^  j  ~

  41. 3 A* B+ w# t( f) M! w
  42. $ ]- ?4 E9 Z% i' g) o& b
复制代码

/ n" d9 L" K6 E2 N9 G相关文章推荐:% n  p' I2 a( N
1.PHP生成微信二维码实例
" N7 D! V2 c5 M8 Z# h, e& {+ J2.php网址转换生成二维码
/ Q+ x( l4 b" g5 C0 N6 K相关视频推荐:
; x4 ~0 Z2 X3 t, p1 z1.独孤九贱(4)_PHP视频教程
1 U2 x( Z! r/ O; b) A- C9 f二、JQUERY生成QR CODE
8 D& o0 b5 e+ K, P$ A% H源码地址:https://github.com/jeromeetienne/jquery-qrcode) d$ r+ ~* M* V% A2 Q# K, \

5 c; ]: `# w; w, bjquery_create.php
7 Q$ a1 [' `5 [0 X0 W6 Q. ^# w$ ^! N0 B& k. L, B% Z
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
8 y; l  G: W. L" Z) }) Z% j4 N
三、PHP识别二维码
1 X1 W) i1 g5 |  ~; b1、方法一
6 V* f# M, n% ^环境需求,安装如下扩展
7 f9 d5 W; g+ T1 W; w- ImageMagick
& j0 i4 l1 |) k& E6 V& _- zbar
" ^1 C4 [! S# E% C4 c/ z- php-zbarcode* D/ ~7 e1 R" y: O" R! [# R" V  A! u
' s/ f( j4 B  @. B) g" l4 E
2、方法二
$ M. @' w. y2 m  v# NPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
7 @/ Q$ i* `2 ]7 C7 ?qrReader类:https://github.com/baagee/php_QrReader
* U0 `- H5 x# u8 ?% h/ \' b0 a# ?8 `9 _# f8 e- m5 ~
  1.   o6 J* M  y9 Z
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径& S8 l% X0 ~- E+ o9 J

  3. ; G! W5 v% E) F: R1 _
  4. $text = $qrcode->text(); //返回识别后的文本
    5 |( g* f. z+ j+ P8 t

  5. * D& r& z- L6 `) r0 Q
  6. echo $text;
    + G4 X/ Y0 N- J, `8 O2 J, v
  7. / k! \: M/ c# ~
  8. ' u5 c' Z$ s9 B9 r+ v7 y
复制代码

. W7 v6 |" `8 u+ Z1 h7 p9 {" c链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
& e" W! y+ ^6 Q9 N! O. F0 ]3 Q# F/ |9 x9 p# G, H% E
2 J6 {/ F4 U( r- c/ _
5 _( W( s4 y2 I

' d' Q. G9 g/ k# H2 [3 k9 q- _3 c$ {
& x. v" {5 v* H& V% r' k- A

5 V: P  @% P& d7 e% e2 r" s* e/ D7 O- g+ Z( I

& F1 o* `/ W( Y" M$ J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 16:48 , Processed in 0.056335 second(s), 23 queries .

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