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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
/ C+ J8 `% m. x6 Y---------------------------------------------------------------------------------------------------
+ ~" o7 `$ T% |$ p$ R# `二维码的分类
! C& |* j% T* \: g  c线性堆叠式二维码! @: {6 b4 J' H6 T" ~0 S7 c, N
4 T/ c4 v- W" u8 {( }- W
矩阵式二维码
- E3 E% d# y# ?8 G+ r$ K: D( P7 ?! D) t/ c9 q" [
二维码的优缺点
& y7 _, |6 G% x& L优点$ e" A6 s: A7 J1 F. Y
信息容量大
- Q6 [' e* S  @3 v. V, u( `6 M! v+ ~0 p9 I* P4 R% ~" X* o; _
编码范围广
/ n" X$ b4 Y& h0 Q. I; X3 w+ }- b2 ?2 c' r6 l. J! I' j8 \: v/ k5 n
容错能力强
6 E+ h' ]+ y, Q' U8 D3 z+ K/ {7 S9 I6 A
译码可靠性高
& ~" P9 z/ q8 a9 q: q; Z8 H
7 |3 r- i- |. r可引入加密措施/ b; F* S% V" m1 K, B2 \& t* j

" M; ~6 |" A2 a( X* G1 j. W3 b2 ]成本低,易制作  B. i( D2 ^2 i9 K  J
0 c" Q' v; x0 t5 Z, H; L5 C0 z
缺点
4 ~% z% e+ ?9 r+ n% [; }$ g二维码技术成为手机病毒、钓鱼网站传播的新渠道% {# j- F* v  l/ y% S- z

( k, e2 g* c$ `$ k  R信息泄密1 T/ d4 V7 q% D, y; y
# s8 K" j  f, b( N/ {# l
目前流行的三大国际标准4 i8 ~6 W5 I" j! P% C
PDF417:不支持中文
* K$ ~/ a! @& }: }6 p& ]0 y3 P& D; d- C) H5 ]
DM:专利未公开,需支付专利费用
5 e/ |$ \& d7 W5 F& q+ H) x
) Q% W9 b" ?2 Y6 NQR CODE:专利公开,支持中文3 e  [5 W3 R' D5 u; J9 M$ F& v
. R% p: t- U) _+ E" Z$ V  H2 @9 s
QR CODE 纠错能力% A3 {- _) P$ I. v) `2 S
L级:约可纠错7%的数据码字
1 s/ f+ C. S# W" Q: \! q! X# z9 R% T# W7 D& J' z! }! [
M级:约可纠错15%的数据码字" Q# m% h3 l6 v& U0 H; F

& U+ T; T6 H& @( Y  @/ M- wQ级:约可纠错25%的数据码字
. ~: d' Q4 z, p4 v4 C2 O
3 C# u- g& V3 UH级:约可纠错30%的数据码字
. W: Z0 Q, r- `
* Y% _! t' p/ c6 G6 X$ T前提条件1 G2 Q% \' a/ ?" E( r0 n7 o
GD库
7 x% q5 m' g3 h3 t" o
3 A4 s% \+ `- r一、PHP生成QR CODE
% P  h7 i  o4 d1 r0 @官网:http://phpqrcode.sourceforge.net/
3 t+ g" ~% [9 H) l+ O, s& k- S7 _2 i0 B
下载源码:https://github.com/endroid/qr-code2 k8 v# @- h2 T1 z2 m4 G. q

8 ]9 D/ n* `& h) N目录结构
! ]! K. t8 n/ m) T 4 W7 ~7 `* q. K# [/ X- v
& M+ P0 V2 g& C9 d
1、qrcode_create.php
+ ^9 e. [  j/ J* Y7 _# Sps:生成普通二维码
5 ?+ q' U# i4 v' J5 f, }
  1. + ?  V7 M  M+ W- e
  2. include_once "./qrcode/phpqrcode.php";/**5 J1 n! g( G8 n; V. {) v) S5 U

  3. 0 Y- i3 B! i3 Q4 [) X" V' P
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径7 c6 L" Q; K( W6 e: }

  5.   D- v, }* U1 X" {: e  a6 `
  6. * 在浏览器上直接生成一个二维码(内容为abc)$ e) c; F( z+ ]6 r7 t9 Y

  7. ! Z& z; F0 n& ?0 G9 a0 |, h. c
  8. */QRcode::png("abc");8 U( [; v; I# b4 `; E* \
  9. 9 t/ [2 e! u! c$ w
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    8 q2 h  x5 F0 z/ U) S

  11. $ Q0 k7 X5 D  C( T3 [. l  H
  12. * 生成文件到本地
    ) u% [0 U1 @6 ^/ i: p

  13. 8 e, X4 [6 _7 _; }
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)' H3 l& u  H- |: r/ h! c  l& }3 t
  15. 9 {) K/ e( J6 ?
  16. * PS:$saveandprint源码的p6参数做了修改
    ! o; O" i! x8 y; r4 o$ r

  17. 5 X- m( L9 |$ @/ M, Q
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);- F! L( M, F! Q
  19. # H- r9 W4 h! r6 F

  20. * U. |, d6 J$ v/ \6 j& G6 n1 i
复制代码
1 T1 e, o8 G9 s7 U2 z5 Z- X' q
2、qrcode_logo.php
* C$ n6 P- I! G3 ~ps:生成带Logo的二维码
  1. # m7 ?4 u5 k! t. i
  2. /**! ?6 o3 N5 K8 s& D9 ~. f+ l  }0 A

  3. & |/ \' t; u, J
  4. * Created by PhpStorm.
    / [* a4 V% e+ N

  5. 7 v( z0 g1 p% h$ Q# ?
  6. * User: user. [: z: e& Z2 g7 e

  7. 6 Z1 Q" w6 D, J: H( r6 ~! p( a
  8. * Date: 2018/8/162 K$ m0 D0 q2 d' T, C

  9. ! ?8 r4 u" e$ m+ f4 z9 Z
  10. * Time: 10:43
    . F( F  T% I1 d/ b9 F9 l

  11. 7 q# @8 q" W; V1 u3 Z! |. M) Z
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    # o  q: b! i& ~/ p* k$ N! ~% W
  13. 5 z" Z/ V* y) C( F1 h
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称  C/ n; M+ B$ z9 t$ H: b5 x
  15. : B* \9 v/ O1 G# r
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    - }& d. Y* W9 k6 Y8 h1 N2 }9 f

  17. , |6 K* A: s# Z: e
  18. $margin = 2;//边距
    * b" Z- p9 G  C0 X0 _
  19. 5 m1 \; A% k# t6 N( e. S- S
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片8 {- H/ ~+ G) ~& Z
  21. + x3 k1 n6 s( f- ?* d( C: H
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   0 O  `7 M; T* R& ]8 H+ {
  23. 8 J$ w$ Q3 S9 }" Q' k- O
  24. $QR = $picPathAndName; //已经生成的原始二维码图3 Z) ~! x! F" E8 C; X7 v/ o
  25. / P: [  M& M$ ~/ U( }2 D
  26.     $Logo = './pic/logo.png';   2 g1 `6 l  W8 T1 n8 _4 X6 }
  27. , `$ _0 z4 V7 w
  28.     $Logo_re = './pic/test_logo.png';   
      S; t. x3 e1 S! J  Q

  29. 5 {3 K1 `0 W" o6 T3 f! K
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   * a" s1 w8 h- \, Y7 C% r6 \+ s9 Z

  31. 6 F5 j- ?# d- R
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    4 T0 ]6 L& w, c

  33. : i; m4 V6 J9 p7 Q( b1 \
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ) D6 M* j' h, h% w) Y% n# O- T

  35. 1 }8 J* ?4 o- Y) D( F7 q0 i- H
  36.     $QR_height = imagesy($QR); //二维码图片高度7 C( h0 x' B! O
  37. # M' ]2 i0 A& |7 c- ~0 ~  a. f
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    ( p' f$ \) E. l4 F4 `
  39. 7 j" ]9 P3 M: Y4 X+ u0 G9 F
  40.     $logo_height = imagesy($Logo); //logo图片高度
    - R' Y3 n* \5 ?9 y/ H8 W
  41. & B; a% B0 c  q5 E
  42.     $logo_qr_width = $QR_width / 5;   : G7 @1 _& V, |3 @/ X3 }, H

  43. , F7 U2 r6 C+ R/ Q/ D; q
  44.     $scale = $logo_width / $logo_qr_width;   / I8 V4 D2 c) p% ]
  45. " W5 i& z/ h, D: }* D# B# h
  46.     $logo_qr_height = $logo_height / $scale;   
    1 \* [/ J+ Q) s3 l/ R5 [- R, v
  47. : n" Q# F/ j' {; @
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    & Y$ F9 `- Z" L' L( ?* g4 R, x; R3 l

  49.   l+ m( k, b# H3 R5 I- `
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    . C+ v' d9 H# \4 K# `' X0 X

  51. 4 d( t+ s4 V3 C) v
  52.     //输出图片
    , Y' `2 \  _: t, v" t0 M! O
  53. 7 f1 M$ |4 O) P6 M  E( o; S$ V5 U/ ^
  54.     imagepng($QR, $Logo_re);( i1 S4 `0 y4 Z  J' D  G( S
  55. * v5 q. I0 D( i  L" P: w; B
  56. }; `' c, F8 b6 h- J$ w: L

  57. ( O1 b) u1 x( e- v* n: ^
  58. % r2 K: u4 v/ l3 o' T
复制代码
3、qrcode_vcard.php (生成电子签名)
0 F: P" O; `3 ?, b# \. V
: }! ^( j7 P  }* wvCard格式:https://zh.wikipedia.org/wiki/VCard
. l0 ^& q0 |5 _( j; @8 }- J2 u5 }0 s1 u$ r% Z/ l

  1. " M) Y. G. d6 H8 Z! ~5 M
  2. * Created by PhpStorm.; c0 M% q/ W6 [' j: d+ \

  3. - H6 Q/ u- ^( h" ?3 A% Z* U. f
  4. * User: user6 ]+ I# t3 h9 Q; ~
  5. 4 a# @% Z! G. S$ D: f
  6. * Date: 2018/8/154 I2 D& d# ^4 Q3 S6 {
  7. 2 n# o" d$ k* ]# r8 O
  8. * Time: 23:00
    # Q# r  V0 k  X6 r6 @
  9. 0 `; u9 |: M+ j9 |! F+ c" F/ q
  10. */require_once "./qrcode/phpqrcode.php";/**# b) l/ x; L' R3 h
  11. / f) V6 o  ?* a
  12. * 生成电子签名
    : u2 J5 ^$ n9 Q$ t
  13. 5 n. q2 X/ v+ J" o3 P  q4 ~
  14. * PS;使用微信扫描二维码  s+ l+ }5 P7 q: c5 k( e2 [. [

  15. : r7 X( u+ j0 |3 y( b8 t% }# \
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ; K/ g0 t! Z; ?! U: _, C

  17. ! y1 w& P. x9 h3 z/ }
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    % G' @7 I% S/ J* z, Z* |4 A6 U2 [

  19. 2 i  B  `8 B: z  X9 B5 O6 a% ]# k
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名, h* C2 W; m2 [$ j

  21. ! o4 i, @: l3 R  }8 }
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    . [& b6 ?- ]1 F1 E0 V* Z
  23. ; y4 z! C  ]) ~
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位5 u1 ]4 F+ X. h0 U/ I$ b

  25. 1 j4 M" v9 L3 t7 k
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
      o3 s# r7 ^$ E+ K
  27. : E, F/ m. q9 w+ z
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址) w+ Y' u( _6 P8 M
  29. 9 `) G  u6 u6 P
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ' K. U# M* W0 {6 x( F

  31. + U( l& \& c" \
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话1 M0 u3 Z  C2 w
  33. + |2 B$ T  E3 s2 g) K
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱+ C2 s+ z0 K  I' y- T5 q: o! S+ V+ e

  35. & x5 A7 }) K7 X# _% `3 d
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    # B+ C# D3 K* v( E5 G4 y5 Y

  37. 1 T9 q, c; u: F8 M# `: a4 Q
  38. $content .= 'END:VCARD' . "\n";//结束标志
    " V5 \2 g" w$ `# Q
  39. - _' w7 j. C' w# O0 {$ y/ }4 O
  40. QRcode::png($content);
      ~$ q, j% l+ |% I5 F7 R
  41. # j. A: R: a% M5 N3 k, Q
  42. 6 x3 B; M9 d: D, P
复制代码

7 E: z* ^/ u$ A( \: q+ Y相关文章推荐:
7 e- U& u: W8 W/ E& b# E, h$ X1.PHP生成微信二维码实例7 G- T0 J7 f3 y3 t
2.php网址转换生成二维码5 j. F, ]( ~% N$ `
相关视频推荐:
  I/ {7 `- b2 I) D1.独孤九贱(4)_PHP视频教程
8 U3 f7 ]& R2 E二、JQUERY生成QR CODE$ S: H9 L7 @5 P. P$ B- n( |
源码地址:https://github.com/jeromeetienne/jquery-qrcode
3 ^; F0 X! O, K
+ C! v  i1 M1 d7 h- @jquery_create.php
) ^* C' Q. x* l0 T( z. O4 H- w- Z; r/ k' i3 c
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

5 _* B7 g: \8 A7 l9 j, l9 Z三、PHP识别二维码
: `  m% x$ P  y: n/ |4 y1、方法一! G. j9 z$ H0 N  [
环境需求,安装如下扩展
9 L$ r5 {. @8 _# O( H2 X7 W- ImageMagick
1 T4 Y  A8 O/ h; N  g- zbar
7 q! V* _5 Q2 D& n& x# Z- php-zbarcode
, w1 L3 X0 l# z7 z* }0 m
" F! g* K" N) K0 a; X2、方法二
& g9 p8 T& l) Y! u  b  J" ^# Y! VPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
: o7 ^$ z( L7 k, t3 a0 TqrReader类:https://github.com/baagee/php_QrReader. O4 H) |! M8 T% ]* X) P0 N0 D5 T1 l

% \) D6 o, h( X) K! Z/ B( t- P0 b

  1. ! x) d/ x# K) A0 |: P
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    + }! @) j6 H' \# f
  3. / W* u: |, e7 d3 g" R1 b
  4. $text = $qrcode->text(); //返回识别后的文本5 X$ N- ~7 @# I  o
  5. - K6 S9 Q) V! R. W. F: @1 H
  6. echo $text;
    " [4 s8 U% l9 Q0 d& f' @, m
  7. + C+ W* ]( T1 e7 U9 I

  8. ; [7 s5 o# Z0 [7 u" ?9 M% n5 ~' C
复制代码

6 l) M8 Y7 Q0 j链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
- R: X: g  U$ v* o3 F0 @5 h4 J* W
7 k& {5 {% ~2 i5 a
! u; q0 A  G) R( b! u$ j
7 u7 ~' J; `" i+ {" J# g! t$ n2 u* \" C0 P
* {# a) W. `5 ^2 u! l
  f8 X6 c' e" a* H+ v6 @$ e6 R  B

3 s. f' m' ^) c+ o- S# y! J& ^5 ~9 y( j. J
$ d/ \! {* `8 M4 [3 }+ h  D

最新评论

浏览过的版块

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

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