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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。8 B  Q0 ~. u. a- R; K' o# s5 P2 r2 ]
---------------------------------------------------------------------------------------------------
4 c3 o: u3 g: l, X& g) Z- y二维码的分类
0 E5 }  X$ B5 Y; J- W) g线性堆叠式二维码
, Q  h# P- m7 Z, U1 l* v7 a9 Z3 c8 `, y" f
矩阵式二维码
2 L8 `3 _, V% `* |, q: f) n7 y& i; F  }, B. g  n" Q
二维码的优缺点, Y+ W, g5 G* P8 y; e1 ~
优点1 p  Y% o' Y1 S( q7 k
信息容量大
" W: i( M$ ]5 A! K& m# ^, R  R5 c1 ?* R/ d8 J/ C' ~
编码范围广. I) K! G5 s+ ]# K- V7 a( _6 K

* ?' q  Y! U$ e$ M/ `+ j$ g  ]容错能力强/ |9 O* A0 L6 D- H+ m- ~. X
( C; D, R, E! |. R
译码可靠性高$ {7 v7 b7 w4 g+ N6 H

* n; u' P& J9 S0 w) F7 y可引入加密措施
9 O+ A. n8 ?  `# H+ O- a5 y! U! c( J: Y  W+ {) [- x5 S
成本低,易制作
; g% }" V" W+ P7 p  d: j$ j
3 i3 n' X3 ?0 U0 S( v5 n7 ]2 w- U缺点
& J5 {0 E8 ?, F# [二维码技术成为手机病毒、钓鱼网站传播的新渠道& N3 a$ c* n5 ^: b/ t6 _" B
) ]4 i' B; I% P* o1 g- V' k4 U
信息泄密
8 M9 a$ W( |# n" F: Z
  ^) u) p! `6 M+ n7 g7 q/ ^目前流行的三大国际标准  E3 m- _9 S+ Y
PDF417:不支持中文, e2 }8 `# i. ?# _+ S9 g

) [* D+ X! E. _  w1 VDM:专利未公开,需支付专利费用
6 ~- T8 D$ G7 V2 b8 u4 W0 D: x! p7 U1 s, Y3 E  p6 d
QR CODE:专利公开,支持中文% U7 B" D* P4 S3 W% }+ i
- d* V8 l) v( J, `" d: R; z
QR CODE 纠错能力. X9 w1 P- Q* _9 `. a" w
L级:约可纠错7%的数据码字
% Z8 t/ W1 U" U+ A4 ]6 F
9 N3 {" i$ W; v) t7 y/ S2 }M级:约可纠错15%的数据码字! F) q4 O* f$ m$ {6 j, K
" }9 h" ?4 a* Y3 ]; c; T% K
Q级:约可纠错25%的数据码字+ i& W$ u% w& `; [
5 |4 r; V' }, f6 l6 J
H级:约可纠错30%的数据码字  V0 _8 a- x9 l: Y

8 U  s/ K' h, o! T前提条件2 i  q$ J" @$ O% e& u# \2 `
GD库
) V: T: q$ Y, @! k, Y- S$ x0 N0 T! w8 c
一、PHP生成QR CODE
# L4 Z& N/ e0 i' ?# j7 w官网:http://phpqrcode.sourceforge.net/& H# }% w: I6 ~6 f9 c0 M

0 `5 j7 p4 M- T% S下载源码:https://github.com/endroid/qr-code
. T& w6 }( s" B. G3 J0 N
4 d  Z& a9 R& p; L目录结构
; F, R; K& h4 ^: b" t) a% K
. g3 P' Q: l4 b; a1 O0 K- w2 r5 K8 K1 w' E/ N6 \* s' l
1、qrcode_create.php
/ K0 \, f! r& Ops:生成普通二维码
" V$ r" V4 ]. x4 r! A5 u, c0 X$ S" f

  1. 2 w$ t& N; {/ v5 M8 x
  2. include_once "./qrcode/phpqrcode.php";/**
    : l2 F* I6 }# |0 e/ _

  3. ! E" V, }% ~! T, e$ o# ^
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    4 V7 L% @" N% I, u

  5. - m. C  }' M5 W4 r" V
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    9 \0 F  \5 p+ L* }. p; n

  7. + ~+ W) }: t  e
  8. */QRcode::png("abc");
    + K. _) A7 p1 g, Y

  9. , h) o# A2 o. G  H: S+ z% N/ {# |
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    - q/ J" w# L. A  B, n, b
  11. # N0 {$ P9 _. r
  12. * 生成文件到本地
    # L- {7 r$ O2 C0 c& d
  13. 6 x: |+ U7 K7 G8 n& c
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印); b3 w% G1 C2 g  O

  15. ! N4 }4 H' r* N8 A
  16. * PS:$saveandprint源码的p6参数做了修改# X! H+ _3 y- A* Z5 s7 S
  17. ; v  U+ b, R* W  t. J, w
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);9 p: M7 s& N, q% D- U0 w  a) }4 B

  19. 4 h% X1 Z9 u4 w7 F) p$ \

  20. / r: {+ i2 m  b9 l$ e% h
复制代码

. ~  C3 |/ N( n3 D% @2、qrcode_logo.php' T$ V# p  J2 ]5 f* K
ps:生成带Logo的二维码

  1. , \5 s8 f! b% X! B! w' j
  2. /**, c* y/ R) y3 L: W0 W

  3. 2 r% {& [- k/ I. m
  4. * Created by PhpStorm.
    5 y& r( F! V/ t3 {! W

  5. 2 p* q: F5 o/ c5 ]  d# d$ ]8 l9 u9 c% ^
  6. * User: user
    0 g, `* A( |0 C: Z
  7. . Z. M7 j+ }  X- w1 p
  8. * Date: 2018/8/16
    + k/ T( F; G4 J- V! U! b  s
  9. : G4 w4 k/ c: i8 [) h; v$ j- d* a
  10. * Time: 10:43  F5 ]- q) t: e# O, A% W! {

  11. - _  c! m8 v/ J1 Y7 _' w3 [
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    5 z4 I; {7 `) @9 n1 c" N  T
  13. 9 P+ y' u, w  _  P' `8 f
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    + @0 y5 Q8 J8 w2 |3 h
  15. ) u. v. v2 e. N. G
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是; R. w- F4 v; {; d
  17. $ ^$ g0 c7 x* s' c% E, j
  18. $margin = 2;//边距
    # b( Q/ H* N# y7 h1 Y+ }6 [- [4 O
  19. 3 V6 ?/ X8 I6 c  {. S
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片, L  Y4 V& o3 M7 J6 X
  21. ; D" P4 i! H6 @4 {3 E5 K6 Y; O& S; e
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){     x! L" I5 K* ~5 a. G" [- s  h
  23. 7 ], G2 B( R2 ^" U
  24. $QR = $picPathAndName; //已经生成的原始二维码图! K# K; E5 d9 `0 w) ]/ r: O

  25. $ L, D  t. @  _3 }- H8 O
  26.     $Logo = './pic/logo.png';   : v1 e$ l4 G9 M; c

  27. " g1 \9 G. Z% ~' a+ Y
  28.     $Logo_re = './pic/test_logo.png';   : H+ r0 c; B$ @

  29. / Q5 C7 d& w3 y6 }* S& R
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    , ^2 l2 d4 W6 U3 f$ ~( O6 z$ z9 H
  31. # U5 ]+ F+ R0 E2 i+ F: x* ]2 a
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    $ a5 U9 Y7 @! a- `: D
  33. : q& @. o- g* D/ a( P$ |
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    / t  w1 K, D7 A6 R! Q. ~3 A' {
  35. , L; @. g% [, u* i# W: k* C
  36.     $QR_height = imagesy($QR); //二维码图片高度8 R/ N5 E+ N; r9 Z* W$ Y  t$ {

  37.   }8 p/ h8 M' s! T! B
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ' `$ v, x& k' K
  39. $ X9 Q2 H4 y# }/ z
  40.     $logo_height = imagesy($Logo); //logo图片高度9 Z* w/ K# N& Z8 n

  41. : r; i, Y! {! S: U& i& X+ C/ o
  42.     $logo_qr_width = $QR_width / 5;   ( E: n2 ~+ Q1 Y+ E5 w. r1 y
  43. & O4 R, u! A$ F. Z) T
  44.     $scale = $logo_width / $logo_qr_width;   1 @" B2 @# F- d5 b7 i( O, K

  45. 0 W2 E1 m* M6 H5 e4 d; h' |1 c
  46.     $logo_qr_height = $logo_height / $scale;   
    : r% i# ?0 D& x/ R- Q7 b; p: s

  47. ! w, z. `" a! F, D5 b
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;# Z. N! f* b( t# x/ i: t

  49. 3 i+ O. b8 f) M
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ( X% A  z% U5 c; ?9 d0 z% M9 u

  51. - Q% m. N3 d& x9 J' q0 m
  52.     //输出图片
    6 d2 K. l2 g' B
  53. 4 [3 F% h1 O5 l& ~
  54.     imagepng($QR, $Logo_re);3 q4 ^% Y) p4 d+ h* d% {

  55. , b2 L; m$ w* q9 @6 {
  56. }* {4 q) ?/ {0 T( I& Y% n# d# ~& m
  57. - u/ R& u% I! g6 ]
  58. 1 C" n& _7 z. h" o) n" p
复制代码
3、qrcode_vcard.php (生成电子签名)% q8 G% @% a7 {2 a8 O: P
) B6 n% B. L( J' w: U& ^6 _- _
vCard格式:https://zh.wikipedia.org/wiki/VCard
; i6 D, O4 X7 g  _- _" u
4 p  Z1 F; l0 W9 W6 \$ j- f

  1. 9 @# D; I$ V1 m& F
  2. * Created by PhpStorm.
    4 D! B4 h% T3 d) V; [
  3. 7 E) j! M: j6 B0 i
  4. * User: user  _) G7 t/ R' w0 j; i+ c
  5. 5 _8 h! F8 C. g2 T# @
  6. * Date: 2018/8/15
    $ H/ ], r+ V& n

  7. 6 t* E" i/ q; X1 E* L
  8. * Time: 23:00
    # P* r( E/ G# `% j3 G
  9. 4 c4 \( }6 \* p$ o
  10. */require_once "./qrcode/phpqrcode.php";/**
    % [3 b3 m& }5 i: l; I7 C6 g2 x

  11. 0 U! t% ~2 _+ [) u' A, V
  12. * 生成电子签名; l, n) U* h! b; x" ]; f; e, F

  13. 1 y9 b" D- ?' d4 h# E: l; g
  14. * PS;使用微信扫描二维码  M5 c  E; K1 Q/ r8 l" ]6 b

  15. 5 `$ @1 p$ V1 M7 u
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    3 m$ h7 L4 k. y# B8 X, n8 Q7 }
  17. 0 J/ ]& [8 V+ J" O2 G3 ~
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    1 Y9 }2 o2 I) }7 K! P
  19. 2 {; p, D9 P$ a5 ~) G9 ?8 q* [
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名: S* M1 g( |1 n8 t
  21. 2 d- ?) W9 F( Q$ b( c" B1 y
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称0 ^- j, G7 q# l/ S

  23. : m. T! x$ L% d) v' t
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    . P; M! P5 P0 j# K+ v

  25. & h: @: _% f' W, }! J# e
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    5 e- {4 O/ y" Q

  27. 8 g+ x5 q" s( U! _/ n3 r* e# m; D
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    ; R7 q8 }& P( P; k: E; A3 ?4 D

  29. ' \$ a/ B; Z% _9 @/ I2 t: z2 {
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    % t: q) O9 V4 c$ q  e3 c3 E

  31. + M" |. a, f) J
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ) o  l4 ^% Q7 r

  33. ! ^, `- q8 u% \* A+ [
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    & s5 D, k" w5 k9 M+ W( O# o

  35.   K: e% d+ F% Y, M6 z
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    . N( W( k9 Q) S  g. h) f
  37.   U9 m4 k  C% d$ d! W
  38. $content .= 'END:VCARD' . "\n";//结束标志
    / u/ X2 z" a2 `( A( A! V
  39. 3 _# V8 I8 u, t7 J5 [6 I; b" Q
  40. QRcode::png($content);5 j- h# a& B( E' i" B; W
  41. 7 w# S( s2 _) ~) v* e

  42. 1 d' z9 a, @( B6 B; ?7 u
复制代码

% `+ p' b3 ~4 ?+ k9 T& t  X9 b  X! K相关文章推荐:
/ C2 ?, Z( g( i+ z( D0 j! q) P: M# H1.PHP生成微信二维码实例
6 f2 t' i' ^. E7 n2.php网址转换生成二维码3 s6 H0 p$ h8 [. w9 D
相关视频推荐:9 j, A! L/ Z2 x( s
1.独孤九贱(4)_PHP视频教程
) t5 `- [4 o, a, {  b* O0 \* w) d二、JQUERY生成QR CODE
2 B7 D0 C* W& P& r% m) s源码地址:https://github.com/jeromeetienne/jquery-qrcode
  o. L0 k: `: ~0 I
- V  q9 e" ?' w$ W0 J' sjquery_create.php
0 i: e, z) }( m6 K5 r( N* J; K8 p, z$ b; D/ Z0 O
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
; p7 \& }( i7 f' g: A4 [0 p
三、PHP识别二维码
  J* U4 k. C4 C5 V1 Z4 A1、方法一
# }; X+ u- R% H' [7 ]* |6 |1 r环境需求,安装如下扩展
# x' q) y% d# `- ImageMagick) V' p3 t3 u# N5 Y; `* k7 y# o
- zbar& q' K1 x. a( {$ V8 G
- php-zbarcode
0 ]7 Y, r4 Y. G! Q" l: @
# d7 P, c. T1 R: c2、方法二
3 ]7 L/ }/ D0 g+ t7 u: x. Q/ jPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
+ U5 v' J4 }0 N  |6 u$ QqrReader类:https://github.com/baagee/php_QrReader
5 w" p. {  C) |6 S* h7 V! t$ }8 {/ @  g$ B* V1 L
  1. 4 z3 R- ]; T$ ~
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    - s" i6 b) p! B$ Q4 A! n

  3. # D: H- c) ?" x$ z+ O
  4. $text = $qrcode->text(); //返回识别后的文本
    ! Y  j/ X) u9 D, t
  5. & x; Q1 B7 @% j; L9 _* [0 {
  6. echo $text;2 ~, k5 p; I2 ?4 E2 D& l6 h
  7. & n( ^: T' S% j# e( V
  8. 7 f* R, i" K' _( R8 W2 \$ U% @
复制代码
& [! T! M" C/ M% Z, P
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7, P9 P# [, h7 X/ H

% U' k4 i! u( e- J! ~+ Z6 F0 o
" z8 d( |6 o4 r; S$ K2 g% Q/ O' F
: A# ^- O# I% a/ v' F0 v' w6 Q5 c: H
& \' B+ m8 j- R# B4 U2 n& I
# V. y: X$ Q* H2 O4 w7 p5 D0 K2 o% \' k
& L! v' @$ g. [
2 @; u- o" z; Y+ T
$ q5 W  g1 K! b

最新评论

浏览过的版块

GMT+8, 2026-3-16 13:32 , Processed in 0.077219 second(s), 22 queries .

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