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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1944|回复: 0

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

[复制链接]
发表于 2020-7-24 00:09:21 | 显示全部楼层 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
5 Y$ ?/ j; P8 z4 Y1 m---------------------------------------------------------------------------------------------------7 R5 h( S; f6 M
二维码的分类+ I( v; ~/ f$ ^1 }& o
线性堆叠式二维码
3 ?/ Z; K7 Z& d) G. U2 s% l
9 i8 {+ X3 m# N. m矩阵式二维码; c3 `: I) A3 \! E- `

; {( ~, X2 J" Q) ]; B7 `8 K) K二维码的优缺点" \5 G  c2 w) W: L8 G% u
优点/ E- S" L* Z' Q) C+ y6 t( C3 y
信息容量大! r8 d5 u& @" [1 u8 i* I0 w
6 x0 q' K4 }4 v+ ^: @5 y; \! s8 f8 [
编码范围广9 T% r& H. z+ r% F4 W) g! E

0 V9 c: N  y0 @/ h( P! R- e+ H容错能力强
! F& z- T% V0 x- K: J: `+ k. u3 L4 O6 A* m6 ]8 x* C, r
译码可靠性高7 r8 K2 N2 Q0 ^6 l6 q  r

2 k# M' h: f8 N2 F) s# o可引入加密措施* @: {* n; y& |; ~+ A/ e# U1 H7 i
9 x$ d8 Z# B7 r2 S
成本低,易制作
+ I" Y. _3 D' H4 i5 j/ c4 Q1 k9 l( p# L4 J
缺点+ a; T; z) s( |& ^* b
二维码技术成为手机病毒、钓鱼网站传播的新渠道4 _8 y+ S# X" b+ d

! O& z6 ~5 h7 y! b8 \9 c信息泄密  i4 Y6 \8 c3 I" B  a

( }: K* Q( d# V* K1 m* @6 D目前流行的三大国际标准
: N5 N2 \) {1 n8 |! v- SPDF417:不支持中文  |9 m: F- b* Z2 X
$ M9 {1 ^, W- ^7 S% k' `
DM:专利未公开,需支付专利费用4 d! \# K" q3 i8 u
: P0 N+ ?1 U7 o0 _! P/ y5 x( K
QR CODE:专利公开,支持中文, }! ], M8 A3 {7 i1 V

, J5 P! @! w1 W. l+ ?. q' P, OQR CODE 纠错能力1 Y4 B0 G# C# d. e7 H/ @
L级:约可纠错7%的数据码字
7 b9 l; Z9 Y6 y5 z& l5 }3 E, R. P) V9 Q, Q4 w4 u% t7 r$ y. V, N
M级:约可纠错15%的数据码字
* e5 S) W& r4 _2 L
3 F: m( z* n. Q$ `) T9 ?! P+ WQ级:约可纠错25%的数据码字! H' i+ T9 d6 f% n

* K  f8 G0 B" `! C6 m/ lH级:约可纠错30%的数据码字
5 S' X, N" {! d* G* L! d6 S; V5 S
7 o2 C( E5 ^* t# ]6 e前提条件0 V, E% M& \  g6 o
GD库# |# z4 j& A3 V" ?' r

% x$ v4 U- Z  m" I9 c4 v一、PHP生成QR CODE
0 _+ E1 O& q9 D: z$ c官网:http://phpqrcode.sourceforge.net/
, m+ C3 w6 {- r+ ~; ~$ q1 ^
& C' @3 U. ~6 G# n6 n下载源码:https://github.com/endroid/qr-code. J2 S/ h: p) ?5 r6 i2 M, w
& ?$ F( A  H$ W# D9 L
目录结构
3 i) [/ g. l, v* X& v, ^  [3 V 03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
1 W* D6 {) y  M/ o$ }- J, s- H
' P6 u; K4 e" t1、qrcode_create.php4 x, y0 K* Y: a# g5 i5 D
ps:生成普通二维码
; A! m( t2 X! I4 }+ W

  1. / }0 S' d" r4 _  U  ^" Q! }& ?$ c/ e
  2. include_once "./qrcode/phpqrcode.php";/**
    1 \  a+ ]8 ]+ s9 A- y' N

  3. 7 s$ Y; x2 n! r' T" \
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    ) x& d, S  d2 h; H5 [. C
  5. ) m$ r; H, _7 O3 \. u" @8 J; b
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ' |0 z" w- f* d' A4 a3 f2 F
  7. + [/ r) ?( p6 F- C
  8. */QRcode::png("abc");
    4 O/ @/ E' w- @* U4 }

  9. ' ]/ q9 h; d& |8 s
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    8 ^% H8 d; h8 L4 I
  11. ) l- `( R$ E* R: l
  12. * 生成文件到本地
    / o& p5 C, z: Y9 ?& }; m3 @  X
  13. # P" w/ \/ E3 X& W  j: g- B
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    ( x3 z" B* _4 h
  15. 1 e( g9 ~5 g: o1 o: n
  16. * PS:$saveandprint源码的p6参数做了修改
    $ f% S: s" q8 g
  17.   ^: L$ S3 A$ P1 s
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);' _* U; s8 z& K5 h5 q. T! s

  19. 8 |3 H- e! A; u- ^7 S

  20. ( p/ M  x* \, k5 h/ Y
复制代码

! s+ w; \8 B! i2 I2 }8 p& H* I2 i2、qrcode_logo.php
9 J* m% |, Z8 P. u1 @ps:生成带Logo的二维码
  1. & a! Z9 ~# L/ ]- \
  2. /**' g) D1 k8 g0 N$ M1 p" g

  3. / B, E4 G) }# S6 v/ }1 I
  4. * Created by PhpStorm.
    8 t& s, b4 W9 ~

  5. 1 i9 c& M1 S9 \6 y! T5 M, o
  6. * User: user
    9 f# R) Q1 h4 ^$ x8 n' U( @% s6 j

  7.   L5 w: b+ \: Z
  8. * Date: 2018/8/16
    - A' ?# K! m' W) S& D3 z
  9. 2 K/ [4 C* d, h" S% H0 `8 ?
  10. * Time: 10:43
    3 l8 a9 R+ u; Q( T/ {" \; y
  11. + X1 M" C; @# X& n- Q6 g) n4 x8 }
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";, _( G6 N* V, l& z! I9 d

  13. 0 R" @6 K, B& ^, S! h5 O, k
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称% j0 ^4 @. F( M4 m6 {- |% @6 G

  15. ' m( s" N* s" w2 O9 D- b  D4 D* ~
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是& R8 y# s: f2 I6 G) K) ~/ j
  17. 9 |) t3 i7 a- R& v( t
  18. $margin = 2;//边距0 F2 {( w, y  q' R9 j+ B& [0 r
  19. 4 ~2 R, J& T% ~; X) w! X5 t/ E
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片+ _) |9 B, |0 E. L5 }2 f8 L
  21. , k# x; q- x6 ~4 z# C
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ! y& H, V& \) P* |
  23. , c% ?7 u5 F" ~; x1 H
  24. $QR = $picPathAndName; //已经生成的原始二维码图& G" g0 k. K6 d# t- e- b# {

  25. 2 L8 `( d8 v  o% Y! C  N( ~" x4 v
  26.     $Logo = './pic/logo.png';   
    6 l6 u; N& s  @. @
  27. $ b" ~' e9 X" M% y8 b
  28.     $Logo_re = './pic/test_logo.png';   
    $ A9 O1 Q& e  U' Y. G

  29. & P5 M( W' j, R+ r. F4 a6 J9 G( B
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    1 \( k! U  a! {" |& V) L/ `
  31. 6 E7 j+ l2 J) l( p, l3 U
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   " |% M4 m6 b8 u* j* {& A

  33. ) H( D0 I3 ~/ |3 B( G& z
  34.     $QR_width = imagesx($QR); //二维码图片宽度* ^4 i$ R2 z! d# I: p$ n0 L
  35. 2 Y2 s- @( C& f7 V7 C1 g
  36.     $QR_height = imagesy($QR); //二维码图片高度+ k7 E, n, T& d- |9 l1 ~' U
  37. 3 ]7 e3 b. |8 E5 W7 G
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    * x- b) r# \) |) }5 N3 ]

  39. 6 }# S; |: O0 B0 c
  40.     $logo_height = imagesy($Logo); //logo图片高度
    5 U: [& P1 o5 u  t- e: W2 V) m
  41.   z1 n( h. S$ }+ I- L
  42.     $logo_qr_width = $QR_width / 5;   9 t2 V3 i& {7 U2 b
  43. ' y+ T. p8 D. Q, ?/ n& U$ m
  44.     $scale = $logo_width / $logo_qr_width;   % Y2 Z6 i, D2 Z# j/ C: h2 h
  45. ' ~" N0 @+ P, B' Z$ G
  46.     $logo_qr_height = $logo_height / $scale;   
    , c4 @/ E8 P$ n5 E  ], _$ V# Z
  47. 2 x$ A) @3 j6 F3 o' x
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;) W% J7 R- w5 j! ]/ r5 y" t

  49. , ~0 [3 N" a2 k6 }, B9 W' ?$ o
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    9 F  F0 U6 x; n
  51. 7 _  T! w/ k% R, z! l9 y
  52.     //输出图片$ _* @$ t5 s' Q

  53. 8 L5 R/ C6 a" F3 }! r# ~7 t
  54.     imagepng($QR, $Logo_re);
    ! o! u( A( k4 x# C# }- \
  55. 9 g9 E9 w+ h9 @, q& E! e
  56. }0 G3 h4 ?  q5 b4 n0 b
  57. ( x/ _7 y  D- m: o& T  `* y
  58. / B! v9 q7 e! ?
复制代码
3、qrcode_vcard.php (生成电子签名)+ n) C6 ~4 K; h) Q* G+ j/ v! k
9 h0 @9 M8 B5 B/ H
vCard格式:https://zh.wikipedia.org/wiki/VCard
$ _& J$ x1 o2 N; D
; s" t1 Y/ s$ o8 N8 z
  1. 5 x. |5 ], ]" C& f  B& S
  2. * Created by PhpStorm.
    . D$ d1 [7 Z) X( A$ u3 e
  3. $ b# J. N& \- I# ?" `; o
  4. * User: user8 O  B& ~0 M3 |$ {& b" M" M7 [

  5. 5 N7 `: Z/ }; c5 \$ c) L
  6. * Date: 2018/8/15
    / Y* I" u, m  _) U# x6 C
  7. , H) c# ~: t$ _- M7 O4 O6 A
  8. * Time: 23:00* H. I6 J; K9 O8 h
  9. 4 E8 Q  o. M, d! J& \$ Y& g
  10. */require_once "./qrcode/phpqrcode.php";/**
    ' }; G7 z* x# U; @

  11. . A& Q+ _' j; m& _( o
  12. * 生成电子签名: l/ y. W) p) {6 `' R

  13. # p  p0 }( K6 K9 N2 j; U' k4 Q$ k/ a7 S
  14. * PS;使用微信扫描二维码
    ( i6 c4 P9 V% B% s
  15. 5 \/ L& C: F9 }! q. o
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志0 }2 V! ^* ?' s/ v& w2 [

  17. & f4 S3 _8 J; G5 X1 Z
  18. $content .= 'VERSION:2.1' . "\n";//当前版本5 H+ y4 B2 k7 @# {3 g) R6 m
  19. 6 x1 q, ]1 l% }4 D) F
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名& V/ d8 C( r' e9 f
  21. + {+ l# Q4 H) {
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称! w& A* g7 }" K5 U# |6 f$ i5 }
  23. * f! K3 y3 B! E  _9 V
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    4 Y5 w# U) W7 R/ e

  25. ) s; i- t5 c: F% p) p( L3 O+ {
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    % p1 i9 \* S6 e  X/ w
  27. 9 X+ o0 M, {. M
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    , ]; D) F2 P0 p* X

  29. 5 F: L( J6 q; M$ `) z) N7 W
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    : S; e( E8 e: n4 N- a8 l( v1 Q. n

  31. % o: r0 r3 h. [2 g
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    : V  a: R+ D7 Z  @

  33. 3 o; e* C! Q/ w! H/ f
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    ' a: u8 {3 R1 K, }/ x

  35. ) U  O1 H% {  q( `" z& c  g
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页% c& s* [' n" }$ `" [
  37. , e: e" A8 p5 F8 r* ?! P) S0 Y
  38. $content .= 'END:VCARD' . "\n";//结束标志
    " H) h& N4 w% T. ?! A  \  y

  39. ( |' K' U' V  [, E# n7 `; g
  40. QRcode::png($content);/ E4 X7 h! _' r. g0 O4 A/ s

  41. 2 a8 x6 a4 n4 T! z* U" v
  42. 6 P6 G! `( C6 t* _! o- ^
复制代码
  T) c$ t) L4 i3 _  d  u& U8 F
相关文章推荐:- H% l/ M0 @9 V
1.PHP生成微信二维码实例
: L5 w1 A3 H- @' O2.php网址转换生成二维码
4 R' S4 p7 a% w, B% B相关视频推荐:
& M$ B6 o4 _; M. x- i  U1.独孤九贱(4)_PHP视频教程( ]0 k7 a  o! ^4 y7 ^$ r8 m
二、JQUERY生成QR CODE
; L. E; W6 I& y: p2 a& r8 d, W4 ]源码地址:https://github.com/jeromeetienne/jquery-qrcode6 A4 k9 i; m2 g( O8 H2 c1 v: Q4 x
6 `, ~: Z6 w* I' ^  }6 z
jquery_create.php
7 Q3 k$ c1 {. b. k4 u% r4 D4 [$ p& [  e" {
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
/ I( C8 @" |3 A. |
三、PHP识别二维码
. y& H: b6 H5 x1、方法一
0 k7 M0 c/ V' ^- G. ~: u9 m, ~4 N环境需求,安装如下扩展# G% L9 n- ^9 k( v
- ImageMagick
* x# g$ N6 ~- t- zbar! \' V' w- t: ?4 f
- php-zbarcode
& i) c* n6 }6 y
" G( L9 g  s- _, J2、方法二* i4 T( r! i, I6 C5 x  H5 v
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
! j( m, L4 T( NqrReader类:https://github.com/baagee/php_QrReader
8 o. c: x- R' n6 b) ^1 b& g* J5 b  x

  1. 4 `6 o, K8 [' {" E2 N' k3 d* ?5 p7 J
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    8 I) a; _  u& ~. K) j
  3. & _+ ^7 t/ i1 r3 |. q
  4. $text = $qrcode->text(); //返回识别后的文本9 S7 K( p7 f4 N+ O8 m! `

  5. 2 C, d+ i5 k" G5 K0 s7 C
  6. echo $text;
    : J+ z& U1 P7 s3 M+ O: o! h
  7. , q  u/ ]: M5 Q- F( b5 W# L+ y7 F

  8. - B6 ?  E/ [5 _! U$ M
复制代码
: ^6 i3 [+ ]% ?. H2 J" w" v
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- f) ^% {+ r  W0 \/ X/ ^6 E4 \8 @" F
' y, Z  q% E- L+ i4 l0 \
* t9 O2 i; C6 E* w" l

5 _& g/ K) @5 K- B  p; D* n4 A6 l/ _% o7 w3 G8 `7 j: d  x

) \# V: B- I! ^' `: w9 i; _* r/ w8 o9 ~" A+ I; s$ D
4 t9 V* V- U+ E6 I, n

4 n5 P, @6 j& [
. w: c1 D" ]; W. {" D
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2021-9-24 17:44 , Processed in 0.147711 second(s), 25 queries .

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