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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 47|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。6 h6 p" i$ T1 i5 k- I  Q; S7 T6 U
---------------------------------------------------------------------------------------------------
/ a' b* S1 g9 n二维码的分类
: U' X2 t* N; }1 d5 C6 p- R# l线性堆叠式二维码
8 m" M4 ^# G: p1 [3 }: v) o, a- V# h) {  l% p
矩阵式二维码
: ^! e: b/ n0 f
' n% n' j5 o6 |4 _2 D二维码的优缺点
6 x0 _/ z. s0 o3 x& A' D2 J+ Q优点
$ `1 Z$ b! i0 C$ l' }5 j信息容量大  {% a2 V* k+ ?. E7 U- v
  e$ |. L3 S4 ~9 p. m+ ^, f* p
编码范围广* \: ^; t8 H9 g$ H
8 s4 M  [' W9 [6 [) I% ]$ T8 t
容错能力强( c" H6 q! w5 J
2 s4 h1 V* y9 ?5 G
译码可靠性高
# H4 J, N+ R" D2 J( _& l/ k: ?8 W: d0 Q. l$ o/ x# n# W2 B; i
可引入加密措施$ J$ _9 N/ v5 S+ C8 v
% \$ O4 `2 a/ k5 K
成本低,易制作
$ _1 m: l0 W) @# |! v, z1 y3 i3 \4 p) r# i& T- K( @
缺点
- B5 K1 @9 |/ c$ r! M二维码技术成为手机病毒、钓鱼网站传播的新渠道
& A' n& v4 L$ A# B
- ?! P4 k& r- c. O1 N1 Z9 ?信息泄密
. R) E% W9 U% f+ K# |$ C4 e2 n# h- A! Q2 P( {3 E
目前流行的三大国际标准& ~  @9 `& w9 z
PDF417:不支持中文
6 @3 v! u6 q7 s0 r# k$ B9 ?5 J1 H9 X3 o& G' [1 H/ Y* M
DM:专利未公开,需支付专利费用' t5 |- ?; E0 ~! Y& o
9 ?; T& {& m: x/ L4 H% B
QR CODE:专利公开,支持中文
# t+ V. O0 Y0 c" r0 |
! P' i: Y7 b9 N  P2 e* XQR CODE 纠错能力: g4 p- C2 c! a( t. L* @0 b4 }( e
L级:约可纠错7%的数据码字" ^7 b9 }! [  O

6 N* j0 p+ ]( X! w' L7 oM级:约可纠错15%的数据码字
: a" O7 y. N, P/ p' V5 E. T2 i5 {
3 M4 [6 F% u* Z6 D4 w" @2 GQ级:约可纠错25%的数据码字7 \9 X% V( P* ?0 ^  F
, O5 V2 c! x2 Q: q- D  |. W  d# D
H级:约可纠错30%的数据码字# _, e% [9 i: a, T/ U" {; x5 T
1 L+ I! I" E% V, ]; j! l6 J
前提条件# G# B. T0 U  Q& Z4 ^
GD库+ _* m4 M6 V. Y! s( X

5 V: a% a6 |& Z一、PHP生成QR CODE
8 F0 H1 k% J$ g2 i  @* J官网:http://phpqrcode.sourceforge.net/! u3 k/ x; C/ N

% V7 k4 D, @2 {( u0 ~" _5 t% h下载源码:https://github.com/endroid/qr-code/ U: b7 T& ?  s, ~4 l9 W2 B
& A1 L1 r* d9 Q' b. @  p7 p
目录结构: Y; m$ Y. {, x9 \" [# k
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
3 j+ q; s' G9 }* B8 x- a& c1 [7 h, J  o$ U
1、qrcode_create.php" s% c) ^, j& u9 P/ U
ps:生成普通二维码# L( z* ^, Z+ a- X' l, V1 {1 f7 k1 I1 Z

  1. 4 q  Z% f) p, w7 B* f$ [- O
  2. include_once "./qrcode/phpqrcode.php";/**1 U3 Q& O: w, o) p

  3. 6 J- ]1 m7 j5 @3 W% T, g& h
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    8 H4 i: h) [4 S/ Z" n
  5. 8 o1 o9 W$ o9 _, H2 k# u, t% {
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    3 A4 D' P( q8 @+ F2 H" K- y

  7. * Q5 X8 X- v  N' o$ E, i' g6 x
  8. */QRcode::png("abc");
    . b0 H; V: y2 G1 B7 A' p
  9. , j8 r' B! l  I1 f
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**7 j7 A( ]3 _4 d/ v3 |

  11. 3 @) h  J/ X; [
  12. * 生成文件到本地; d* J& i$ R6 S+ T9 m  t* q

  13. 2 n+ c% @7 S2 I& m( ?% ^
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ( C. \9 G5 u) P- |/ y, g" X' V9 R

  15. 9 E6 o, T- N+ B: m
  16. * PS:$saveandprint源码的p6参数做了修改8 P. T/ s. _. E+ @

  17. $ |! t0 B( I! |, l" K; C
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);5 ^: l$ l; O; b; q6 c, Y4 t6 `/ ~

  19. * y8 p* D0 A1 w, @9 K
  20. 1 m# E# C; M* e
复制代码

. P  ^/ I. q1 V8 `2、qrcode_logo.php
( Q+ n$ E" o6 Z& O% tps:生成带Logo的二维码
  1. / f7 }! A2 h( K- T1 m" b
  2. /**
    4 P+ j. a3 J5 U
  3. 2 p, r# D# g2 Y( z) E; v- m2 a, D
  4. * Created by PhpStorm.: B0 ?/ C  B" C
  5. 4 E% [9 q' O6 d# [% C
  6. * User: user
    / j3 q/ m% q0 n# ], j: i+ X  l

  7. - J6 v4 K1 x6 Q/ R" l
  8. * Date: 2018/8/160 ~/ e8 p. N) B0 J3 }
  9. $ C& _& M- T% Q& w
  10. * Time: 10:436 y- Y9 v* d$ b5 h
  11. * `: u% e% A; O% @# @5 l2 O! H
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";& m5 Y6 q* Q5 o! q

  13. # t' T, |4 ]! ^/ ^( }
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ' _8 o9 m" O7 D: M0 F
  15. 3 E3 u0 [& [5 A
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    8 m7 p/ s$ J5 p4 |/ w! n2 ?! z8 F5 g
  17. + i( w( `7 c) ]# `% B, s4 C
  18. $margin = 2;//边距
    " z" b. d5 ~, X8 n" b/ {8 w4 y
  19. ' d' Z, X: v6 X" S+ w
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片4 S0 `) G6 Z* b: O  W, N
  21. , w+ F8 z0 I' b0 C" V5 i
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ( {$ E/ z7 F3 O& E

  23. . ]* `# F& `; p! M- B
  24. $QR = $picPathAndName; //已经生成的原始二维码图% b* g" {% z. _3 X

  25. 0 i5 N1 K1 R% N# Y7 J
  26.     $Logo = './pic/logo.png';   ' M& M  r2 D8 R, n! _

  27. , Y/ `' I6 P/ s3 I% H1 s
  28.     $Logo_re = './pic/test_logo.png';   9 g: Q3 s  o- r$ J4 T* `8 \
  29. % @: u( {8 G! }
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   - {& m1 L' _& \
  31. 4 p* B( x! z) |) `$ }3 v6 F% G* y$ b% e
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    3 U: }! h" ~; _: S- Y5 I  Z3 o

  33. $ A7 v. Q' Q1 \2 U% s( M! X7 X
  34.     $QR_width = imagesx($QR); //二维码图片宽度" D* N, z/ A) B1 D

  35. & F+ X7 F; M% `
  36.     $QR_height = imagesy($QR); //二维码图片高度' g7 V8 T( F6 S* }4 P
  37. $ x2 y2 Y- F# Z5 }( n$ c6 ^
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    3 Z  Z/ d( D# S4 V

  39. . r& W6 t) E3 I, M$ y6 {# @2 i) a
  40.     $logo_height = imagesy($Logo); //logo图片高度4 D# o$ k4 i9 k( y1 d% k

  41.   \1 [% d! t& Y8 H
  42.     $logo_qr_width = $QR_width / 5;   
    # c. D8 F- V7 d* r& ?
  43. ; U) d4 ^1 b  c' H. O+ r
  44.     $scale = $logo_width / $logo_qr_width;   
    7 i! g0 C/ j, H$ Q5 S
  45.   O5 K) A2 N7 H
  46.     $logo_qr_height = $logo_height / $scale;     `$ d6 _( ?( o: c/ s6 z: a

  47. & p1 Z$ A: @# |; _* Q2 v# A/ J
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;5 i# v$ {* \3 R: q8 u

  49. 1 s# p. K" E$ i2 F( \! z3 Y
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   6 M2 N+ ?$ ~3 k( d0 x

  51. , e2 R  C, y* }& T$ L3 P! e
  52.     //输出图片6 k% K6 {3 t+ g4 t  q7 N6 }( P+ w8 z

  53. 5 k, F# h8 Z7 I" H) {
  54.     imagepng($QR, $Logo_re);
    4 s- p* O$ b$ s: H- B' e4 O' H0 Q
  55. - X) ~' @) @3 F9 J, Y" x2 j
  56. }
    - ?6 C* a$ I2 ?# _' H

  57. 3 b- _& }) [" ?
  58. : X7 ]4 n; D3 J/ C8 d0 ]4 o! J
复制代码
3、qrcode_vcard.php (生成电子签名)
& Q2 w" W* ^- w) L' ]# ^8 _
# y. S4 m9 r$ v0 M1 E. g( EvCard格式:https://zh.wikipedia.org/wiki/VCard7 G/ d, e7 b5 j6 f; P2 D- p

0 r1 n8 f7 d/ ^3 K! l  v1 Y. z
  1.   y( q% N6 _9 T. w0 [
  2. * Created by PhpStorm.
    7 i* H% ?5 s3 d. }1 f, k" ^
  3. / \1 b/ l: j/ h' T
  4. * User: user
    2 L  h' M4 q* t

  5. $ i3 j  ^- F' C
  6. * Date: 2018/8/15
    5 N& K9 K: O' a, i+ R- p  y% y

  7. # X3 t; A  h6 ?6 Y; T( A
  8. * Time: 23:00
    ) X, t- O( C7 g" e- _
  9. , f; o+ b( i3 h: S* T
  10. */require_once "./qrcode/phpqrcode.php";/**
    7 S1 x+ c+ T# ~7 I1 }$ q4 w( w( N! z) i

  11. , O) t/ m  S7 y
  12. * 生成电子签名
    9 w: ?# I, O6 T9 C
  13. ( ?) N0 O6 U" w! F; {
  14. * PS;使用微信扫描二维码
    / y8 l  W' A; V  J8 J
  15. % R, i6 N$ Y8 V& u
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志6 d& C6 B7 l* M5 ]2 e
  17. 6 T) k% D8 f4 k; E) ~& u+ o
  18. $content .= 'VERSION:2.1' . "\n";//当前版本' [" E* Y2 X  {* `* b* V
  19. 7 k% l5 r+ o- _  s" n9 F
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名8 w; |1 m- G: ]+ l) u( B! S
  21. , \2 d' r6 b, \. r. q# [, T
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称1 `$ ?# L; H. \0 U$ F
  23. $ `5 O. D% q. d! T( J: m/ u
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位6 w0 g% N) L" R5 F: F5 o. I' n
  25. * U. N4 M) I5 p) o
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    - o) X0 K; ^+ h/ g
  27. # J, k) i4 u) x& q
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    5 _% U; W) h7 ~5 N# @0 s: t
  29. 9 d; s' }6 O8 l. ^) m
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家); Q( O! g% J# J  m( v
  31. , Q+ r+ W4 M. m& U" K% K
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ) S. `( J! ^) \+ u) Z; g
  33. : \, ]$ k7 _) t
  34. $content .= 'EMAIL:[email protected]' . "\n";//邮箱4 S! J: b$ w& w: }' I$ L5 G
  35. . V# S: `1 D3 t6 ?
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    , s/ t! c( L: r: f2 x. d- H$ U) R
  37. - w1 C* u* O$ ]
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ( p  y& K  N( y3 I% w6 J* L8 l

  39. + C$ T5 {  g: G8 |( ]. d: n
  40. QRcode::png($content);
    6 N! _& }9 H& U) N+ i% b
  41. ; x. y, u. {' x: Q9 T8 u

  42. $ A$ t9 e* U& }6 _
复制代码

1 H" i5 l0 b9 b$ O相关文章推荐:
4 u; [6 i- J6 @; t' p# ]1.PHP生成微信二维码实例8 q! G5 G+ z/ [$ [2 K6 }9 H
2.php网址转换生成二维码
) T: ?6 J' S% K6 p/ ?相关视频推荐:: O2 \, o- i4 C( y) B3 `) X
1.独孤九贱(4)_PHP视频教程4 D; k4 `7 k1 \& a
二、JQUERY生成QR CODE) y) X% v( h0 n8 }
源码地址:https://github.com/jeromeetienne/jquery-qrcode& v, x/ S# G$ v# ~) i/ O* e

* J) I; ]& Q% t5 ], h' ujquery_create.php
6 `! T# X. n' t! w& j, I/ V- @+ h& Z9 V4 t
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

: B* E9 m3 [$ \  r* M: ]三、PHP识别二维码- h$ M9 d0 h% Q0 h1 w6 Y
1、方法一
! f9 l* q$ Q3 w( p! z5 p' {2 |环境需求,安装如下扩展
4 ?  c) s% M9 q4 L' f  X- ImageMagick
" \' z- X3 U! P/ [* J% Y- zbar3 v2 k( y6 A6 Q/ ]+ u
- php-zbarcode) B( u- P+ Y3 T

1 u" L+ S8 H# v: K* n/ f2、方法二
8 |. A# H/ |. [PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以! k! L# v+ S1 M" G& j5 k
qrReader类:https://github.com/baagee/php_QrReader
2 E. l  W# ~2 s% x! |$ i5 g- o4 ?$ b9 B% b" S

  1. 2 Q  k4 w" _' V0 b8 O; j
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    8 o4 |+ E# u# f# O# a1 N0 o( r' a- T
  3. : {4 W- b2 U% v5 f6 U
  4. $text = $qrcode->text(); //返回识别后的文本
    4 n/ h$ K8 A1 i

  5. ! {' Y7 l4 L6 W( o8 W9 O0 E  ^
  6. echo $text;6 r2 J  d; S: i& c
  7. $ n* _% ?- H4 w6 p# Z2 e- v/ `7 B

  8. ! g$ |) |- I$ p( F% M
复制代码

7 K; X8 k% v. ^& g1 v; ~链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
2 a3 p! y" I! b" G3 r0 o# y# O, K6 U' w; Y

& K2 N( x, y6 V4 p$ _& h' h# U# L2 p" {$ I7 [* Y2 F

4 \; w5 r2 z5 \. l0 s4 z9 F# V
# ^5 {/ {: U) R. I& ]) O8 X0 f5 d
4 p6 n* p/ [6 W# U% t: I0 f. @$ R; s6 X  o5 U- Q
; v8 _5 s' Z  T% m* b+ }$ q. V" n
- N- j9 r  ?! W
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

        在线客服系统
    申请友链|小黑屋|手机版|Archiver| 备案信息代码:冀ICP备18019919号-1

GMT+8, 2020-8-10 12:35 , Processed in 0.174060 second(s), 25 queries .

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