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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

PHP如何实现二维码的生成以及识别(代码) ------------------...

发布者: admin | 发布时间: 2020-7-24 00:09| 查看数: 16993| 评论数: 0|帖子模式

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。/ P2 h, H( i: S$ _
---------------------------------------------------------------------------------------------------
9 F: j$ Y$ f7 r: ~( _0 L% Y+ o# D二维码的分类
8 o( ]7 x) e( e; D- M线性堆叠式二维码
$ ^) N5 _2 ?# N$ `2 F+ J" ]
: j+ F8 _# H& F6 R8 K2 J+ u! {矩阵式二维码
5 u: |+ f/ B" a# A, S
1 P' ?& M2 G) B二维码的优缺点
- P# s. j. J+ W优点
, ?( J5 Y/ K0 B; z信息容量大
0 t8 Z/ F0 l; N& R1 J4 p$ ^/ I8 g0 S0 P7 n% A# H; A9 z0 q
编码范围广
; P0 U5 Q; \6 I! Q& f% Y/ i# L! E: Q1 m9 ~
容错能力强% u/ u  G! `! X( ?) t7 N
$ I9 g' {% s. K2 Y6 w
译码可靠性高
4 d3 M4 ^# o" x" F: r( N1 D5 [
0 d1 l1 a2 r& c, h- m# d" s) R可引入加密措施9 z. H) }; `" M) @& G
6 a' o% B# j: U* F  `! h4 ~, w, H
成本低,易制作
5 {) h4 |3 h/ `+ e5 Z/ g# J" {
5 D. h3 x: `' L% u  ?+ i' [缺点
8 C9 J$ J# w! a9 G7 W二维码技术成为手机病毒、钓鱼网站传播的新渠道
7 g+ H& _6 ~% v/ t" d  b3 i+ z( W5 l/ C/ X, g! `5 n! K
信息泄密
* O4 H( A1 l. C. [) [* S  n7 w  m  z$ n4 F( v2 q3 a" \. e5 w
目前流行的三大国际标准
$ ]6 @% v! k% H- p  ^PDF417:不支持中文. w& p2 _* Y5 e3 G# u
. T4 p9 T4 v6 |' p1 i( n+ q
DM:专利未公开,需支付专利费用2 Z) n# ~$ a$ b1 N) F

  N9 h/ r8 m% _" T" `QR CODE:专利公开,支持中文
) G' N6 e6 }. u- w
" O9 Y5 t# o" `QR CODE 纠错能力
8 v0 }9 K; H( S" v' ]: @+ E) {. o: ~L级:约可纠错7%的数据码字
3 z! I/ V/ m0 ^- h+ [3 J9 G. k1 f) m% X+ N6 C
M级:约可纠错15%的数据码字
6 H' p+ @+ f& G
% E: ?; [- A, J* x. E7 H, J3 O6 OQ级:约可纠错25%的数据码字
/ S. o2 N' F$ |$ p  d7 \) \3 m: Q1 o$ p( Z2 l0 c+ w7 d
H级:约可纠错30%的数据码字0 o) Z% e9 k5 b* X4 N# ]
0 I# i1 X' x& @0 R5 }6 l
前提条件
1 P4 u* @1 H2 RGD库2 B, |7 N9 u3 W: G0 L9 B0 a

# U' @! J- N* ?: e% i+ f- W) ^0 \一、PHP生成QR CODE
  [8 k. y& S7 [3 S* K" z) F官网:http://phpqrcode.sourceforge.net/. K  H. r, M" i. {

; @. ]) u% I7 p" \下载源码:https://github.com/endroid/qr-code
1 f3 _0 Y4 {9 o  B% u& G' L4 i) E) l
目录结构
% k9 s3 ~& k. n: ^
. e; M2 _8 G0 T+ _
$ ?9 x8 V  `0 S  A& v; E+ I9 x1、qrcode_create.php
4 b, N8 R1 J) Gps:生成普通二维码
/ @* O' Z+ b, M: ?4 [) P8 G

  1. 1 M% @; i( I9 e5 g' g4 v' _& F
  2. include_once "./qrcode/phpqrcode.php";/**
    ' {! p7 r& |5 p, d5 {4 x* I9 b7 G, v
  3. 9 U5 r( g5 X$ Y+ Q2 E  u* g5 D
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    8 @* i/ u! c- E% I& \' F) O% I. H; m
  5.   y: D; U  ^) N8 }# g/ F# g0 p  J
  6. * 在浏览器上直接生成一个二维码(内容为abc)% r/ E5 N, f% P) R$ r7 y
  7. : h" v0 X- _; P8 h  g' [/ x
  8. */QRcode::png("abc");7 g. ]6 H9 u& P0 @; r

  9. 8 s. c* W+ y" {. t
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    % u$ C( G- h! u7 w  N7 y
  11. 9 ?* |9 f6 O" u# \4 I
  12. * 生成文件到本地, v6 @4 Q( m. A4 V# f; j

  13. 0 Y$ E. N' E$ K5 F; C2 B
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
      W6 H. Y& O$ M) R; e+ R* a

  15. & w2 O+ f2 p( l  T* d' a
  16. * PS:$saveandprint源码的p6参数做了修改1 V% E5 [% ]8 s( x5 Z6 H: A

  17. 6 [' D. `8 s9 ^0 S, X8 _
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);7 I& x% q# [! G# x# f- g

  19. $ N( T5 t' d) [% B$ X

  20. - Z8 C* X. P- T. J8 y) t
复制代码
0 L$ q# b8 U) T( q
2、qrcode_logo.php
9 H) |; Y1 @6 p8 s6 o% h/ k+ Hps:生成带Logo的二维码
  1.   Q* x# f2 P% ]4 Z
  2. /**9 [% ~/ n/ @7 w2 J* n$ j

  3. . x. V/ K6 M8 T: M0 U& T( T
  4. * Created by PhpStorm.$ `' K0 P3 |. G
  5. ( s& G5 g3 X! ~8 C* [
  6. * User: user; s- Q4 H! f/ y! v" p$ V1 D
  7. 8 R* Y/ N& S) T# O% ]+ p' S5 F, _
  8. * Date: 2018/8/16
    . e- _1 y8 r4 E: ^5 `+ ^2 h, {

  9. 1 y) {; k, N! n
  10. * Time: 10:43) t) s, G/ {: z* b  g
  11. # u' ]5 X; K  {, i0 H
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";8 c, Q" @5 _) x% S# f
  13. # t/ k1 Z6 ^' R9 R+ N
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称( D! J9 V- x9 H5 ?0 Q

  15. 1 e6 @1 I& z; t& @
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    + c6 c7 r( W4 {# [
  17. ( k9 x8 n8 n8 T- }, A% ~
  18. $margin = 2;//边距
    + A% s' a) \- Y" u) N

  19. 4 X% _3 {8 I! |9 _* u. [
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片) E! W. c6 e% ]) e% Y* r* o0 ^2 t

  21. " }5 M% N" i% [; [) g" S
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   3 j% ]& P" M1 r; i
  23. 9 C" e- W8 x' t+ ?
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    6 v' @% m! r0 v, t
  25. 7 H# b) F9 P' L, _1 s. S0 h
  26.     $Logo = './pic/logo.png';   
    4 m5 k: @% V$ _+ R# }# N

  27. % l. j& P5 F0 D% T; z4 `
  28.     $Logo_re = './pic/test_logo.png';   
    % K4 J: t- D7 w0 L

  29.   F% y; A, v  h( }) C3 X$ E; m  X
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   1 ^" e7 Z8 k2 Q" `/ d" A! T/ _* r9 z

  31. # g! O( h/ s! z2 W
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    - |3 o+ R% I% D# x: ?. j

  33. * S3 ^1 w1 G1 Y( Y; Q8 e$ _
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    * s$ m" d8 C' h- Q. Z* c) @

  35. 1 K3 @# Q$ D2 c# |. \) W
  36.     $QR_height = imagesy($QR); //二维码图片高度4 ~5 f4 ~4 K" s% A% }8 v; ^0 D
  37. 3 i  X+ w  ~7 t2 W8 K. C8 e7 r2 [
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    9 _/ x3 ]: D% K1 K5 X* C- V

  39. 3 J; |7 p/ o9 j0 W3 U" N
  40.     $logo_height = imagesy($Logo); //logo图片高度
    - I( `- b/ U" v( B8 C2 b0 s9 v, ?
  41. & C4 g0 r4 o* x6 K" X* T
  42.     $logo_qr_width = $QR_width / 5;   # A( D5 P* g/ v- D
  43. & R" D( z: _5 m# d
  44.     $scale = $logo_width / $logo_qr_width;   
    / a5 L) Z( V$ {- e. {- j" K

  45. + i* m0 E% F) e8 z# A/ b
  46.     $logo_qr_height = $logo_height / $scale;   2 s' m* f0 n; _2 C- T
  47.   t+ c- q6 [7 K- X- d
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ' L9 ]# T. k7 h
  49. ! L, J0 ^8 o2 a& j* t. k
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    " ^" X0 N) L2 S' W
  51. 3 A/ a& J. `- k( y( v, R7 @( M
  52.     //输出图片
    + [) i7 F0 l- H% o2 a3 V4 x
  53. # w9 R% a' I: B4 l2 `2 e
  54.     imagepng($QR, $Logo_re);
    & I) \4 H: }% O6 D

  55. * o' [! A6 t$ H0 o9 ^) f6 x
  56. }
    ) a* |6 y2 t2 ^3 B

  57. # {+ h2 `$ y) G' u" {6 o

  58. : S( b: r) c$ p! b8 \, e  {
复制代码
3、qrcode_vcard.php (生成电子签名)7 `0 [3 R8 y% i( w

2 }) B) F- [2 A; t3 zvCard格式:https://zh.wikipedia.org/wiki/VCard
2 L% V+ X7 b; Z7 `3 T6 N4 {$ O9 q- O- @
  1. 9 j! W* V+ C% A
  2. * Created by PhpStorm.7 c2 t$ B4 Z' O+ D" o9 z% v* t

  3. : u4 ?0 y) h# c3 ~/ @
  4. * User: user) t: f9 Q7 ?, `& q5 l" j  T+ l$ {
  5. " ^! }  y9 W' V2 V  V$ ]
  6. * Date: 2018/8/15
    ' E" t; T& Q  W: |% Q/ }; V6 `
  7. , P. a5 O/ [+ V! L
  8. * Time: 23:00' g0 N2 L8 a. k

  9. 7 s" N9 j, L3 N. T0 d3 f
  10. */require_once "./qrcode/phpqrcode.php";/**9 |) X# q6 i1 g5 N5 u+ W
  11. . e: n4 c6 K9 o
  12. * 生成电子签名$ R: Y' I) N+ N: U: O

  13. " g6 z+ v# y5 f$ u# F
  14. * PS;使用微信扫描二维码, C2 i. u8 W) x4 M6 ]5 Q4 l

  15. $ V0 \, C" P, Z
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志# p8 V$ E& m) n* K0 \+ L  a. r

  17. # k, Y2 w* L# s- W% y
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    5 \. }; W/ T9 h$ `
  19. " X0 ^1 L0 Y; C0 P2 ~
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    9 n# G: U" B7 _3 A/ S
  21. & t/ R& s* D; K9 }
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ! Z, U( {" _+ O5 m% _" [
  23. % c+ y$ k5 b6 e' j0 T9 L, r& O
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位" c/ w- D# Y/ ~% q+ B) r7 M- l
  25. % k, a, Z1 o# u  O
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    3 k! \4 r0 c# }+ s

  27. ' O+ a% O1 L  t- M  R5 b2 A$ ~
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址  U" N. {' g& q) _3 v4 W

  29. ) w, I) }4 o6 t, G
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)4 p" d" [4 m4 b
  31. % F0 a6 I3 t/ Z2 m2 U* I% g# a
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    % y) ]+ ^8 m( @. g4 W. o( U" n' L8 m
  33. 0 R6 {/ ~6 S) C4 Y# x: S/ v' x
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    % }# I' E8 Y7 T* b8 f
  35. 8 K1 D7 i7 F7 w+ r. ?
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    , T9 s/ w* l  D% U9 N+ P

  37. 0 A3 Z  A/ o$ A7 K
  38. $content .= 'END:VCARD' . "\n";//结束标志
    . A; P  U$ g# d0 X7 d4 _

  39. % H8 r, t0 T& `
  40. QRcode::png($content);% Z' `; t$ ?$ R- n

  41. ( [* w; @- M: b# Q
  42. 7 {2 ?: k1 S) A( ]( o
复制代码
/ J3 x* f, n" e5 c) Z8 e
相关文章推荐:3 e* T) V* n# N9 R: g# l* H
1.PHP生成微信二维码实例
+ d; k4 x2 S* o# f  x2 a$ t2.php网址转换生成二维码
" `8 |, A  l9 `& e# A! }. z; F相关视频推荐:
$ ~/ P* N6 \. R: d4 ~/ w1.独孤九贱(4)_PHP视频教程5 n2 P) ^$ e; y" g, W
二、JQUERY生成QR CODE
* M7 _8 X( ?8 K2 X源码地址:https://github.com/jeromeetienne/jquery-qrcode8 A4 g8 N6 m( Z. q

* J5 I5 P; Z& O% d5 ^, Q. f1 T1 ljquery_create.php
: V& B( V  {, o/ ^' K2 k. p0 v& G7 d$ x- s2 ?
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
  F# r2 e, R# o) ^' z8 Q
三、PHP识别二维码: z1 @; X3 O, [! |& o( ~
1、方法一
% T1 d, P7 ]0 B' L4 n7 V; N7 ~! I环境需求,安装如下扩展' M8 w8 m3 P* {- M# C
- ImageMagick( q$ ]# h  F$ u! |4 c' m% {" i/ t
- zbar
5 s4 y% K2 d" P* Z) p- php-zbarcode
. \# T( ^; R9 ~/ V" @
  R2 d# T: {. y/ W3 o; o0 q2、方法二
& d) i' f' J. ~1 qPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以8 N, t5 u( z* f$ E1 A" V+ g! Q" D6 a5 }
qrReader类:https://github.com/baagee/php_QrReader
' P' b2 T3 |( y, F
; Z# D+ G/ {  C9 j) ~" m2 s

  1. 4 f: T* q% m% C% K. I$ v4 X4 ~
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径6 K. h6 T- {7 J- F. M( J
  3. % F* }0 p% o0 b& c" S* E! S
  4. $text = $qrcode->text(); //返回识别后的文本1 v1 N3 O+ R- K0 a' \  d; d( R& V

  5. + [# r" ^' n2 r& @) C  ^
  6. echo $text;
    / L8 f' B! F, F& \( D

  7. / R4 O( U1 k' \
  8. 5 u" w" @: t9 H) x$ A  E5 A/ o
复制代码

! Z- t% @3 T8 d. Y0 Y* C链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
+ v0 |+ F( G; b3 \1 G0 Z: K2 y
0 ]# Z- O* _# i1 R; c' V, [
( H" \  P' ?  V2 K" L  s8 R' W$ c# f4 x4 }" K0 r

. j0 i, \2 V1 [7 c+ D0 v" ?0 y0 E  P7 q* u8 w8 w& w8 f/ T# }0 Z

; a4 Y. Y+ Z3 g$ y, ?& I8 r$ N+ Z6 o  N

' K/ X8 W* }# o; v
- |( i) I3 y4 U

最新评论

浏览过的版块

GMT+8, 2026-6-19 22:26 , Processed in 0.051230 second(s), 22 queries .

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