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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
4 i7 R) N" P( g3 P0 `. X---------------------------------------------------------------------------------------------------8 f. C- c$ o/ |2 C& \4 N/ v0 w
二维码的分类
, p4 ~  L( f, G$ n1 Z, m线性堆叠式二维码
+ E1 N3 @# R# {) h8 j6 S
: F3 Q$ Q' L' b矩阵式二维码- U& G, ?2 }% ^/ Q6 ~

% \8 D1 m4 C2 W! U6 L二维码的优缺点
+ M7 `! b$ h% R: N2 F: r8 c优点% I5 `# }: T; p2 \( t- C
信息容量大
0 D2 x* M- d  }
, h7 m% H+ K( m9 A" M" t编码范围广1 Z: X- b" ~  ]0 p$ O2 ~) I/ k- I3 n
0 \1 C1 N: |: `% I# b& ~4 j) N
容错能力强
$ I6 z& r% c& S" \/ U4 r2 I4 c6 B2 {9 k
译码可靠性高
* Y+ {# Z! w1 n" O/ O
/ [* W! l# @# e0 g/ h* M4 ^可引入加密措施
# v5 W) k5 Z; J7 x) t+ X4 F* _4 S5 G; |
成本低,易制作2 ~) B/ ^5 j# i6 @+ Q

, c* s0 `/ o7 V& s* r) u% q9 ]缺点. q3 H  ?" ]( v; R: F1 @
二维码技术成为手机病毒、钓鱼网站传播的新渠道- r% _( }' ~: O/ V
6 Y( C; q* r! q( |
信息泄密
5 G% y8 E1 x0 L6 u3 S$ a) S, W  k& F0 W# b8 n
目前流行的三大国际标准6 y+ N. z; Q% r- |
PDF417:不支持中文
$ l4 Q; N) V) M6 }1 D, n; X( v" Z
DM:专利未公开,需支付专利费用* o3 R5 E& m* i1 k' X5 \/ K" C

' P* Y' \$ f) ^) o2 M6 n3 fQR CODE:专利公开,支持中文. v! u+ q$ j9 f4 w/ D' W8 h3 O
) x# ~% K/ K! V  {& q
QR CODE 纠错能力4 u6 T1 u, [" @1 ]$ X+ m
L级:约可纠错7%的数据码字3 C' Q' ~$ S. }5 b: ^/ F0 A" m

0 P4 r2 G7 O) m& K/ nM级:约可纠错15%的数据码字
: g' v" i4 D9 D% d/ L0 u7 Q1 Q- f8 H- g
Q级:约可纠错25%的数据码字
2 \. D: O* E, s8 |& w1 [
; J) l/ `% y4 C9 o) XH级:约可纠错30%的数据码字) d0 {. @: r. S8 Q( \4 i
5 q, s: p0 z9 Z8 H
前提条件& t/ S; f/ b! a
GD库
; v, A+ R' ?9 z; B, a3 B1 L+ F
% x6 F# I* k& D1 _% t% n7 E一、PHP生成QR CODE) N# }0 ~2 v3 y
官网:http://phpqrcode.sourceforge.net/, B5 Z5 g- b! r

1 n* h, t' k, z+ ^# o; Y下载源码:https://github.com/endroid/qr-code
) P6 }8 i8 U. q( T. F/ P
  h! W+ t8 {" \% m8 O4 _( M2 g目录结构; t. C  |3 f+ y6 e/ b6 B3 u) Y/ v

) H0 \2 X5 k5 ?! S! W" ?/ f/ R1 \3 S7 {0 L; F
1、qrcode_create.php' r2 H0 L4 U' x* o
ps:生成普通二维码
% b5 [0 o. {3 O7 W4 \9 m* z' a0 n
  1. ! `; l! i1 a4 m0 F! f( l7 }) |% u
  2. include_once "./qrcode/phpqrcode.php";/**
      p: I- }) u5 p4 R0 X

  3. & e! ^1 D% c- C. O+ y; R
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    & @2 W2 f% W- ?

  5. ( n2 ~5 F- l- `
  6. * 在浏览器上直接生成一个二维码(内容为abc)
      j( j( b1 Y/ N3 Y& n2 `+ Q

  7. - z. _6 g' j$ }( B- }2 B
  8. */QRcode::png("abc");
    ) r% d, Y0 s9 y5 z4 I+ H
  9. - i% g8 |- ^5 Y* B
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    8 V: ?1 d* y+ p

  11. 1 r& F' a! b! X) I0 z3 L* r: Z
  12. * 生成文件到本地
    . ~2 n) f0 G$ s
  13. " `+ z( d) q$ I' y
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    " E, p. A6 Z; k* w

  15. 3 r2 {; t% y. P2 z: V  R
  16. * PS:$saveandprint源码的p6参数做了修改
    3 t' T, H2 D8 R" C0 s; s' S
  17. 3 F2 _6 q$ R' T* `' T, b
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    / G8 S: |* M9 U0 @8 a7 W9 ]
  19. 0 k* T( A+ H9 A
  20. $ C6 ]+ e! @( W) _
复制代码
# @  K+ _2 a% }$ G+ d
2、qrcode_logo.php
9 N4 G5 ?. B7 F6 t, d) g' y0 kps:生成带Logo的二维码
  1. & y$ B/ i2 \6 P
  2. /**
    ) M0 b- z  u  B* {: n
  3. 5 U2 _# Z# m+ M& d9 P3 K
  4. * Created by PhpStorm.
    ( D3 y8 G, q) M8 m; ~4 r

  5. ' F: `" O- I5 L7 }! D
  6. * User: user) b& N1 j5 J& i% p1 T
  7. , g% h/ ]0 X* _/ R8 Q# p
  8. * Date: 2018/8/16) l& c1 c# A2 ^1 j7 e

  9. ! D9 @* C, ~# Y  f# Y. Q& L$ J- `! I
  10. * Time: 10:43# G2 }& X1 q, l& k

  11. 3 R7 l, q8 V6 L( H- I) T
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";3 d3 Q! B& j1 T3 r7 |/ l' k

  13. - ~8 j+ j/ ^8 T; O  f5 I% x
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    * N, V- a5 v" Q* o# N

  15. 7 O, F7 ?8 [6 s* }- e
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    3 M7 {4 j! g! Q9 K# W8 G: `
  17. 0 E) d& z5 o8 B4 F6 E' ~2 L6 Q
  18. $margin = 2;//边距0 C7 W. Z- e& k/ {; K( A! C

  19. ! Q, d6 c* g" m
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片! }3 d9 f3 }- b) [3 ]! P) u/ D

  21. % y& B2 ~' T/ @- z
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   , {6 x7 _, P* o9 L. i2 b

  23. / V( o( o. P' d! Y4 @% x+ C; \
  24. $QR = $picPathAndName; //已经生成的原始二维码图3 l% L7 @/ C( O1 F
  25. , n! G8 b  T- c
  26.     $Logo = './pic/logo.png';   : X" I4 X7 f: z9 H

  27. . G! O' u8 R9 O2 o5 q& J
  28.     $Logo_re = './pic/test_logo.png';   , _. R( B% n, \. `8 K

  29. 6 R& W9 p8 V' T5 k( _$ ^( K
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   & s+ g; F2 w. d1 r: [6 e) `

  31. 7 X. `- m. J8 S5 ^2 n
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   - j# F. m3 @9 B2 _1 z, I$ Y5 P

  33.   |: Z3 c: d# U9 }* p/ ]: n% Y
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    1 a- \; Z1 G! ^0 f% K
  35. + C! _# H' L8 C- G5 ]" h6 o
  36.     $QR_height = imagesy($QR); //二维码图片高度
    & n& s- Y7 w$ N+ @. q' d

  37. / o' @$ D) j! B& ?' Q- n& n
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ; d" \6 N% a! e# _' g2 z3 G9 z, i

  39. ) n3 L' D$ c! U! _! k
  40.     $logo_height = imagesy($Logo); //logo图片高度
    * m& T9 }! r( _" F2 R$ B6 b

  41. 1 V$ y# P: O+ z1 ]& c1 X
  42.     $logo_qr_width = $QR_width / 5;   
    3 q: r6 G0 H9 m2 O, N+ \. [3 n
  43. 1 r" H  t& U0 }
  44.     $scale = $logo_width / $logo_qr_width;   7 |$ _- y" _1 }: W
  45. : E. l& \- ~- h# S: u
  46.     $logo_qr_height = $logo_height / $scale;   6 Q4 J. p# x" Q* L* V! I

  47. 2 |4 o( z; p  S# i; B$ X
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    " |5 d2 i2 v1 F7 D+ }

  49. 2 T" j4 o+ u0 s; [
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   9 m+ S" M/ g- v, x9 d% m# a  x' C
  51. ; d) K0 ~0 \. B( s6 X
  52.     //输出图片5 O! [" s3 h" x- r0 Z( x
  53. + _( g9 g  s5 m) n* z
  54.     imagepng($QR, $Logo_re);* y5 e0 x3 `0 v- F: o

  55. ! `% r* \8 d2 ?, ]2 X* m3 Y7 W& {
  56. }( w% S1 G7 \9 D. B
  57.   u7 u! [) X0 {" x* L

  58. 9 j/ N- r' P1 ]; ^6 g0 G6 @
复制代码
3、qrcode_vcard.php (生成电子签名)- T# x0 I& N* m1 V
* {) N7 t$ ^" e
vCard格式:https://zh.wikipedia.org/wiki/VCard
1 V2 a7 F& e. ^: A! s( [+ ]2 f4 h: J4 p6 ~3 |  J, c: g  K1 v, x# V' g* ]

  1. , a$ c3 @' A. o. [# P  q6 Q. t
  2. * Created by PhpStorm.
    2 A; j) f. w( b8 J& [
  3. 3 o: @( g+ `' f$ }* N! c$ P
  4. * User: user
    % o2 G# v/ Q) E. C
  5. : n; G: Z8 {/ s
  6. * Date: 2018/8/15
    6 |+ b* Z- P: w' k- t& X

  7. ' K8 i' J3 A9 G2 q
  8. * Time: 23:00
    & N2 i/ q$ {" Q* c% ^( d

  9. * ?( K! R6 I4 d4 Q/ J
  10. */require_once "./qrcode/phpqrcode.php";/**1 `+ R. G6 _$ R. l2 f

  11. " K" p# n; [2 b) V, p
  12. * 生成电子签名
    $ W" O6 x0 ~/ `" I0 S, I
  13. $ r9 X: K( x2 Y* t9 K2 M
  14. * PS;使用微信扫描二维码
    9 _; E. ^$ |( p5 G2 F
  15. ' Z2 @7 J. J$ g  T* d
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志2 o: k) n5 y7 b/ V' ?3 ]
  17. 6 v5 {, m" A& Q; E1 R6 o
  18. $content .= 'VERSION:2.1' . "\n";//当前版本7 p! l/ }  g' E! N6 ^. V

  19. 0 D9 ]1 h5 }3 g" V% m1 H+ l
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名4 q7 q) t7 T9 ]" b$ q

  21. & b. P, }2 T, d
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    . Q4 n" R, C4 r) j& K8 v6 q# x

  23. " ~9 K0 M6 L# ]! E3 k  n
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    " f+ ~( n% W! C3 G
  25. % O0 z: u/ k% J  N
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话! m4 D. @1 Y$ t# H% z# p& {7 i
  27. 2 \( [5 V$ j" F" V( h/ S
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址0 G+ @) X5 `" q9 v
  29. . v5 T6 A( e# y4 z* E! j
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    9 H$ R7 {5 K5 Q% L4 p

  31. 5 T9 l5 O( i# {, O- |
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    % Y4 \, d! [7 t6 k3 ]1 x: Y7 T

  33. ' a6 t  L# C! g# o" b5 L; P
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    4 }% }; G, E! u" t$ }! p
  35. 9 ~- P! `/ m9 A2 ^
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    / O& G3 k% W; p* f. N  C

  37. ) r- R# C! Z" S# Z4 b
  38. $content .= 'END:VCARD' . "\n";//结束标志: z% g6 N! A! l2 g+ @6 ]
  39. 0 j0 }; D# T$ v4 f8 ]
  40. QRcode::png($content);
    5 \6 z9 ~6 |% q$ }* n! Y

  41. 3 R# |% p) `7 ]. J

  42. 6 j6 X3 M5 W) g  r1 @4 R) m! W& A
复制代码

4 a( Q$ q8 p( t7 b相关文章推荐:
4 [- E+ _1 }- }( u& q1.PHP生成微信二维码实例+ w4 c4 f9 c) h8 R
2.php网址转换生成二维码
+ U( P8 ?1 e% S1 W0 k( L2 E相关视频推荐:
* l9 N: |8 r. l- K# c1.独孤九贱(4)_PHP视频教程& [& e! ?( o2 o$ s
二、JQUERY生成QR CODE
% G" I$ V9 y0 ?# s2 g  r6 `源码地址:https://github.com/jeromeetienne/jquery-qrcode) U' `5 @- A/ f* }+ l' x! i/ @- W

/ I; f  _7 {" z4 {* h$ {jquery_create.php
  r$ C) ~% q6 H5 z+ |$ E: p# o; w6 g) E. I: F5 S9 P7 S1 e
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
$ I( R9 t' k/ _1 J6 a
三、PHP识别二维码
& l- }) ~8 C- I9 e; ~1、方法一
& L5 Q) ~, D  f" k7 j环境需求,安装如下扩展* }( |+ A' y8 m, I. z' C( s
- ImageMagick( _; ?5 U! F+ o4 C) h; ~2 y& w
- zbar
5 N+ D* L1 l/ t6 J1 ]- php-zbarcode
  q8 K8 \* K# K: }, @0 s2 n0 J. x' M2 B8 {
2、方法二
$ b# M: u  K! F; k6 J; `; w/ v! \PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
% z" o9 |- S& p3 X$ U4 [qrReader类:https://github.com/baagee/php_QrReader
+ v4 R1 D: e( ~8 w. B5 u: `! ^
: w7 T/ B6 N5 d0 h
  1. 5 B6 h' e1 t! Z4 W- k9 }
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - W. q' K. t! q8 k: B
  3. 6 K0 q) a' n, ^6 U) m
  4. $text = $qrcode->text(); //返回识别后的文本* }. ~4 D9 |7 w( ^& v; R

  5. 5 V( |% K3 R1 G$ b! s& |& w' }8 F
  6. echo $text;
    1 d. K; Z' I; d, ]2 d
  7. 5 Y/ w# j- b8 a( }' t- w! ~

  8. 0 B) ^5 E- ~4 @5 M6 s
复制代码

# Z; D6 S" y5 r$ s链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
" @1 C8 d6 e- q* }0 ^
7 D) l. J5 w. V' `1 W# A6 L- j7 c+ S' G2 \2 m1 s' {' y

8 _$ ?' {# m# h, g8 Q! \( z4 q6 ^- r$ J: p- E

4 X; m1 w2 L3 m+ {
- Z% _1 A$ x9 m) x; T7 y. r% _
. g  ]& X$ d" B; n
3 N% m2 l) ^! m  U+ r" ]0 E( J% ?
/ z7 C/ g0 _+ H* x; ~& f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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