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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
2 H2 R  z1 w- c  [---------------------------------------------------------------------------------------------------
, X( Y* G! F/ X二维码的分类
% [: \- z7 l7 ^" k线性堆叠式二维码
" R$ i; O, V# k; s
/ H1 ]) A! `* H4 I) B$ B矩阵式二维码
7 C* j8 f1 H( o8 R# P+ ?0 F
* N1 u- R) q& S! M- a二维码的优缺点
% H; k" M7 P  j. L( t4 c& _优点. G% @$ h2 G! D5 l
信息容量大. s4 j9 Y" S1 @" q
: x2 q6 [& D, B- C" b  _
编码范围广0 ]0 m. q$ I% \9 l

* T$ M7 y: k4 f# P: L容错能力强
9 g; D8 F' w, @; H
* v/ M* u  V2 P/ c译码可靠性高' @/ E' `- @& N. {0 V! u

! h! b/ E# T. o5 r" I; z  w可引入加密措施
1 g  [% b) M. N" C& |- J7 R9 }5 t7 H3 t) h3 o, a
成本低,易制作$ q" I, @1 b! C" G
& P- n/ K' |+ a% ?' _( h% }. @
缺点
( R! a2 M$ e( Q- q1 ~- E: ]5 Z二维码技术成为手机病毒、钓鱼网站传播的新渠道0 S" U5 O5 E# _# ~0 |: p

+ x  A& u- K% B% M% H; I  P$ H9 u; G信息泄密& t1 j+ ~7 V3 L# s

  [, _! T7 p! t# A' P# G0 M9 X目前流行的三大国际标准% u( |& s  G% i5 \5 a) o0 w
PDF417:不支持中文
6 I9 G5 n3 N1 u% w
1 O9 q9 Z. a& }3 o; Q) p9 B& ODM:专利未公开,需支付专利费用
+ ]/ |5 x" }. D0 t7 `
7 m8 y: c0 d# {2 YQR CODE:专利公开,支持中文* g" m4 J6 ~3 H$ I+ u
( t3 \- D4 U; s5 \: z
QR CODE 纠错能力
. f9 u0 l. u! R9 W7 \( GL级:约可纠错7%的数据码字
% ]- P7 S; C2 g" f) p. ]
$ C3 W- T/ j$ _; {. aM级:约可纠错15%的数据码字
) f# i% C9 S. g7 z* p) x: W0 x2 l- B6 s( \) H
Q级:约可纠错25%的数据码字8 V6 R$ T5 s0 D4 F0 h

/ a/ ]" E/ U. s; @H级:约可纠错30%的数据码字
8 `, Q% Z6 \2 ^" ]9 v5 p+ h  R
! f0 t& E$ {4 ]! v, B% k前提条件- ^' T7 V& i. g! @0 g$ f
GD库4 G& l9 I1 A% `* o: z

  d- N  r8 n' X8 ]9 L. n一、PHP生成QR CODE( X+ A! o$ V* a# s
官网:http://phpqrcode.sourceforge.net/
- G) b" x* r; C4 F: J0 l- i% B9 C8 m; V8 G6 g! V
下载源码:https://github.com/endroid/qr-code' ~9 p, U8 ^$ r* J* X% `1 z6 v

: I* n* s3 j6 w. P目录结构
% g! `; G; P, x
0 R/ q* P# g' `6 W9 {, c
, q& ~- \# _0 Z% t/ G1、qrcode_create.php' r9 b: V" o/ p
ps:生成普通二维码! o3 {! Z  z2 k* Q( p; F

  1. $ v; U* X* l5 `8 K+ q4 y
  2. include_once "./qrcode/phpqrcode.php";/**
    9 c: z& y4 p! S7 U8 z4 ]8 O% p

  3. . S1 [. ^" M1 V' Z/ Q. a! H
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    - \# B: n  x# V6 f
  5. 5 o. B% X5 o/ i/ B0 {) _) v
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    . h& T  {0 n5 z4 b9 m: o

  7. : Z  Y" _$ F/ s  v! Q
  8. */QRcode::png("abc");
    ; A" z. Y4 h% v  h

  9. 8 O! U) c% C  m  ?# m2 {
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    * _7 o1 p1 a& r( K( m7 I
  11. 8 {5 x9 ~' q' B- r& c$ X( x
  12. * 生成文件到本地
    % R7 X# N2 B7 U3 K( z& i

  13. 0 W- s% X1 j( u2 p
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    . |* i9 s9 Y* C$ d

  15. * I+ q' i2 g) N; }" r
  16. * PS:$saveandprint源码的p6参数做了修改
    % d( k9 v! S  N

  17.   H7 @: [( E) q* G( K' a
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    1 |/ z  x9 F. c0 a
  19. 6 a4 I, u% l5 K: H

  20. 1 a+ m. S; L% d; p- q0 {
复制代码
' Y9 v4 b' Z% ]7 L% o& [+ H
2、qrcode_logo.php
3 ?+ w& P6 ]! I( |( N. d2 hps:生成带Logo的二维码

  1. & p7 k- y! M) J* `. ?
  2. /**$ @; u, V+ |4 y8 J

  3. " J% J4 Q! @3 ~
  4. * Created by PhpStorm.
    ( P0 m$ R* k$ e
  5. 8 u% k5 I  g6 g/ E% X( l
  6. * User: user
    3 |, \' A( v1 O+ Z% w' q0 G3 E
  7. 3 w* _  D0 O: \* ^
  8. * Date: 2018/8/167 k8 f* O2 b6 z& [
  9. $ n  q% K! ^5 B& n0 @
  10. * Time: 10:43
    9 Y: K8 p* h4 c8 P8 l9 K
  11. ' a5 ]% l+ T* T* I0 r1 k6 C
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";/ L6 z2 }) I% B
  13. ( T' }! T6 C4 J' \6 ~+ b
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称- ]+ B4 x9 Y; b2 u9 q* Q( `
  15. & U! q! j  }  P$ B% Q
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    " A7 _/ p# v6 `0 p. P+ X6 S0 _! ]3 p. h

  17. 1 \! L+ J( ^. K: v4 e# [
  18. $margin = 2;//边距2 v; d; k2 ]: l3 ~
  19. $ B# W* K8 [* n0 J) w  N
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    5 M) `: R# R' S- e! b) L7 ?

  21.   X7 ?2 E  H1 L9 I. I. x: D# `8 D
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    1 E( f0 e9 _: p. O

  23. 8 c  Y; t, v: F! O
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    & y: I: X6 w* @
  25. + k  @9 K7 [' K9 b! z
  26.     $Logo = './pic/logo.png';   
    2 w5 @6 B& o7 H- W2 s
  27. 8 P; c; q9 Y0 H  Q+ K" S4 e
  28.     $Logo_re = './pic/test_logo.png';   8 G0 T1 W0 Y) h8 m# U% P

  29. 8 E( z4 U, R4 ]& U
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    6 m2 i9 j& V; w& l

  31. 2 D0 R8 \5 F. m( s- f; F; l& y  @
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   7 Q, q% e& _/ L. K; L# p* a2 c$ p2 Z

  33. 7 x+ u. _  V7 V& X+ J, @+ G8 b9 S
  34.     $QR_width = imagesx($QR); //二维码图片宽度$ T+ w0 R0 a; }2 Q" V
  35.   I4 ~6 I* q$ a
  36.     $QR_height = imagesy($QR); //二维码图片高度
    . x( L7 B  k7 q. {( I% p

  37. 2 |) X3 z$ \! r" R
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    % a5 Z" v8 d9 L6 C. |

  39. ( p* F1 h& }' e9 @1 x" h( P- H
  40.     $logo_height = imagesy($Logo); //logo图片高度
    8 V1 `4 e+ K4 d. U, Y- _& ^" |: x1 \
  41. 8 M" M1 z$ ?+ t0 v4 o
  42.     $logo_qr_width = $QR_width / 5;   $ G/ i; B2 t8 S$ A9 R# q  u6 E
  43. 7 n' I' z& ]( ?. x# G4 E
  44.     $scale = $logo_width / $logo_qr_width;   
    ; T* ]) K1 M, X% _9 r

  45. - L9 d1 K) w% q. A- I( ]9 [1 s( G7 g
  46.     $logo_qr_height = $logo_height / $scale;   5 |" C# c+ ~/ n# U% n: S

  47. 1 P) L. _  Z1 D3 z' v: c
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;9 [; h. z4 O/ T( v; r! J
  49. . o  _' a# Z8 n
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   # B' H, K. \' M4 R7 Z
  51. + k" a- X) e# V/ s$ s6 _' O
  52.     //输出图片  ~: D: Z! Y7 P# r9 B
  53. 0 w0 d5 S+ \! D2 r2 T5 _
  54.     imagepng($QR, $Logo_re);
    7 J: p1 g8 e' `; l0 g

  55. 2 x3 y' c, S5 @5 r5 n
  56. }' L- h* n) t: r6 P( C& D/ H
  57. 6 `* y2 A  G/ y) h
  58. ) q9 h  b! X+ M" f& u1 A
复制代码
3、qrcode_vcard.php (生成电子签名)
) [$ B! O8 h) v' d' |% L
  S. \  I: O/ Z9 `' X7 WvCard格式:https://zh.wikipedia.org/wiki/VCard
" v+ ], k3 @* G* S2 W' k( Q9 V
% ?, ^  G9 `3 T( ?  ^
  1. 3 i, G! d. R* x* |  O5 @9 S
  2. * Created by PhpStorm.
    . W1 Q( M7 |  `' r2 ]) n

  3. : o& |- v& i" x& T$ J& g( S. T
  4. * User: user% ]) i- I2 b2 _! y

  5. 6 o- a$ s% G1 y) q, M
  6. * Date: 2018/8/158 _9 Q% ]/ m6 V
  7. ) s6 z# Y7 r! }( d1 D5 F& ?4 ~
  8. * Time: 23:00
    ) m+ P! {8 }& m3 w; X
  9. * \4 ~6 w! f6 b( l$ ?4 @, k8 S
  10. */require_once "./qrcode/phpqrcode.php";/**
    ; Q( J5 m! U; y  Q* N* C

  11. ( _7 ^( Z. k2 c; K& E9 `  u
  12. * 生成电子签名( I2 ^; [5 C. _& [- r
  13. * }7 ~  R' j, V. C- s! I, Q
  14. * PS;使用微信扫描二维码3 l  A1 }# R' Z

  15. # \0 Q- d. N5 i6 U$ d7 ]- T) u+ D
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    5 D# K* M4 g3 `2 _

  17. ' A9 f0 l1 s* w  ]+ i' y; T
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    & ^& m0 |# r. F5 c1 y  e

  19. 3 L% G$ @9 }; G/ C! _0 n6 D# \
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    % O+ n# \- I: s+ I) D, ^' P

  21. + i6 D) n4 a$ C, i
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ' r7 E0 @+ N7 |; ~

  23. 3 m$ O% h2 o: O% o) w0 S/ M# L
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位3 D2 Z6 i9 B0 f( i

  25.   M  x9 e( C% D; v
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    . T5 l% B& k. H* t! ?4 b, Y/ G- X6 H

  27. 3 G+ I: k6 W  |- w# Q% V. n
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址1 G  w) F6 z" P  ?6 T( s7 {8 k

  29. " ]( E0 B& t  U8 H5 x" u/ f2 |
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)/ e' p5 j# l9 u9 m' W6 N* v
  31. " q. Z+ S2 c$ b9 {1 ^0 C6 N
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话' Q% a% ^; C3 j; j
  33. 0 E# a9 s  ~2 U$ Q
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    3 b: t. K7 ]7 N, _* c" S4 `
  35. + l, s+ V" D# _( O
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页7 e0 a: @0 e8 Z/ b
  37.   C: u5 [$ z& [, w3 B# f8 m: R+ m
  38. $content .= 'END:VCARD' . "\n";//结束标志) B/ S# K) _. e( A3 t4 ?
  39. + I$ D- Z7 ~6 p
  40. QRcode::png($content);
    1 J# q. C1 D& e! n
  41. 1 P( u2 B' [) a: n5 r, F
  42. * S! d. u* ?( i
复制代码

  ~2 A8 f% k4 u! T3 N相关文章推荐:
' d- T& j" F0 N. |1.PHP生成微信二维码实例
) q1 g: F7 M( o& p8 x# D6 U6 z2.php网址转换生成二维码
( \0 J( {: p+ ~8 {- M& L, x) R相关视频推荐:
# D) ~4 \( j7 P7 p( \2 p6 a, L1.独孤九贱(4)_PHP视频教程
+ ~. K7 X$ ^1 A/ ]( H二、JQUERY生成QR CODE
* F- g- K& m: Y7 [源码地址:https://github.com/jeromeetienne/jquery-qrcode
/ M; \+ W% V3 t- c; Y/ W5 a
; B/ R9 P1 ?- t' ^+ T# Mjquery_create.php
' S7 j) l) v4 S% X) N8 p  Q( r* R2 i& O4 r1 Q
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
. O2 k3 P/ _* F$ z! d- H9 C& A( T
三、PHP识别二维码7 \" l' Q, H+ v0 p- \$ W" ?
1、方法一* a2 E( [) M# r5 |, x7 ^
环境需求,安装如下扩展% n% j6 M3 Q# A% ]  u( G! M1 A+ |
- ImageMagick) a! k6 l; j6 ^! Z
- zbar7 z5 o- M" r) l2 {
- php-zbarcode
, ]% V, N; ?" z9 k# P( E9 `; P& j$ d& }! D, v4 ~/ U8 a
2、方法二
) Q% h1 j; h: _" b* Y1 j7 N  EPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以7 H' G, X7 W5 W7 B
qrReader类:https://github.com/baagee/php_QrReader5 q. N7 D) ~6 g. t
5 a* Y8 W) Z/ S/ ~# v5 m" x

  1.   q2 N$ v: }2 X, n! f  b
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径' t5 ~6 r9 O& r  {% v  x+ a2 V4 N
  3. 2 `" g0 J: E) l
  4. $text = $qrcode->text(); //返回识别后的文本
    3 }: }; \4 ]  j7 x. v

  5. 9 I  a% f# h$ y  r) y+ A9 N" \
  6. echo $text;6 p& Y3 z# o' O: C8 J2 r: j' ?

  7. % Q  E1 G( g  F% P) m8 `) }

  8. & \% `5 H! L+ G# l& c1 \0 M- _) B
复制代码

. ~) M+ Z( d6 e# |/ p' v. e链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y74 A9 }6 V+ m: u: n# [: V

  [$ `: {+ f! Y! b/ O8 Y; U0 z$ l

' I" n5 c, Y0 J0 R+ R: J% @: X7 T9 U$ x  r) e
7 [+ t; Q) X7 q9 O2 G1 m% \

+ P5 c+ m' \5 `/ r! X" @( u  w7 }6 t8 z' [
% ?/ v7 R4 m$ W2 ?6 i3 R( X
! b! g2 D* h& {

最新评论

GMT+8, 2026-1-30 11:25 , Processed in 0.056543 second(s), 22 queries .

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