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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18320|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。; j1 g1 L0 q, E7 R: [! Y2 S# X
---------------------------------------------------------------------------------------------------' S1 M' x; d6 k5 m2 r
二维码的分类
6 w/ {5 X& m2 k线性堆叠式二维码; C' I3 Z3 Y$ E* e5 N( }; j6 l

6 M& S2 C- q! }矩阵式二维码
2 T' k$ E8 }; `; ]  U+ C2 _0 A* l% M# a$ N# v$ S$ P" }9 d! N! g
二维码的优缺点
4 t" F/ U) K! H5 e  N优点
7 {% N3 e& y. V2 A8 l& Q* P信息容量大/ D! i8 F4 K4 H% a

( k- H8 [' R3 ^5 a* k$ o8 ?编码范围广
8 j) R% d* z5 x% a# i& ?2 Q3 q7 j& @2 p
容错能力强
) L7 J) j% N8 |7 C6 }, R2 T3 i: m. Y
译码可靠性高' e0 r6 b6 a% i! ~1 ^
4 ~( |" E7 y1 r4 e# E
可引入加密措施
9 h0 k$ b5 k8 T. w3 d" u& G
7 X: q$ x) g+ ^* B7 q/ v成本低,易制作: K5 N% ]$ D+ p# h8 x: ?

% i, y& y4 W9 k0 c; X& g5 b& S缺点9 t7 T1 G9 n% ]. F- [' u
二维码技术成为手机病毒、钓鱼网站传播的新渠道
  R6 P8 }0 f' i! U1 U. k+ Q" ]! g! I& I. l% k8 t9 S' |
信息泄密7 e. q7 b6 F" _* K$ {1 h. W

% {+ J2 }2 n3 {" }' f目前流行的三大国际标准
9 A- y' i/ Q7 W9 ZPDF417:不支持中文
. s, r( U* P( u, k2 ^& ~1 O9 u' D1 ~7 S) B# I( u" [, M
DM:专利未公开,需支付专利费用
2 s5 [" ^6 ?9 p: q' ~1 t2 z( b# M* o3 W) u
QR CODE:专利公开,支持中文1 b* {& q  o) {6 i
% V* v3 S- ]8 T& s
QR CODE 纠错能力1 u/ M8 O- G8 [; d' V+ {
L级:约可纠错7%的数据码字3 `' D9 s) b) a! r

& w. w' F: s( {M级:约可纠错15%的数据码字2 P: `8 _( l8 c% h
/ r6 s& k' r" k- i! {( K
Q级:约可纠错25%的数据码字
- g: H  [5 r4 D
) T/ I: r2 p- ^0 YH级:约可纠错30%的数据码字( f, _5 G+ q& f& P- {
# }, c9 Z& p+ E! ]  W% j1 _
前提条件1 ]4 t/ k! U4 ]0 p3 j, A
GD库
0 V1 U! |! b' U% d1 S9 s; r0 W- H
$ @5 q$ l) W/ K  s/ E5 }: F2 m一、PHP生成QR CODE
& U& v, ]  L' r1 J; \# O" O1 K官网:http://phpqrcode.sourceforge.net/
9 Q. Z, h/ r0 H8 D: N. I' ]6 S$ _# @9 A, z+ ?% w, V7 P5 f/ A
下载源码:https://github.com/endroid/qr-code; O& _5 o' I; B7 ?( ?
0 {( q. ^, n/ w9 K  Y+ D" F' E
目录结构
, X' I! s% A" P" V 7 e+ W+ ?- \; D% B
7 j/ G* c5 ^2 U7 a
1、qrcode_create.php
9 r+ j* D5 |! Y: ~ps:生成普通二维码
$ o: r, G9 Y0 y1 D
  1. 6 [! U; |; M9 @& R9 G! {
  2. include_once "./qrcode/phpqrcode.php";/**
    3 s/ D2 g8 v! \8 a9 }
  3. # C# k/ {4 a5 u. i2 O
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径1 l3 S/ J/ u% H4 D  @( Q

  5. + Q& M9 x0 c' M0 L( d
  6. * 在浏览器上直接生成一个二维码(内容为abc)3 w+ k) c5 x) H6 C+ j2 e, f" |

  7. 7 O* b+ J  l9 x3 u; N
  8. */QRcode::png("abc");+ H/ D  e# D( d/ {" A2 ?% c
  9. , Q3 u# m7 y% m) H  W
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**) c5 @6 n- L% n; c6 J

  11. 7 y2 F# j9 y9 G% u: v3 W
  12. * 生成文件到本地
    " K" Y& W0 [4 N, M

  13. * X& ~* v/ j' w$ I; F2 J) T
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)0 j& J) m  @# b- D. ^7 @% G7 Q" E
  15.   F: j. ?% X  b' k
  16. * PS:$saveandprint源码的p6参数做了修改
    7 }- d( K4 R3 x7 f+ c

  17. 8 {8 o& p0 O& C$ n' H1 w1 Y
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    $ a! g3 k/ S) @& ?8 H4 T

  19. 9 e+ S) Z+ P( e  E7 u( k

  20. 4 {9 L& {0 `: A. L; _
复制代码

# D5 |# A) C) G6 I2 T0 D7 R2、qrcode_logo.php
3 w1 z( p* v, @. o; Ips:生成带Logo的二维码

  1. * z+ K9 p8 h3 H  [3 Z
  2. /**$ `) o* y. l& F# r$ T* p

  3. , E& ~! c) \6 ^9 k! f8 G- D9 B
  4. * Created by PhpStorm.
    1 _' N  |* R( y7 e
  5. 4 z  z1 y* i9 @+ c; ~% I  c2 m/ n
  6. * User: user
    ! f9 k1 Y/ ?- K- e# Z0 j  ^
  7. ! {/ M: W  W6 b5 r1 C
  8. * Date: 2018/8/16
    ; n( _1 q0 d! m9 b# q% [8 M2 t1 ^

  9. : O8 E! @4 |7 a1 U
  10. * Time: 10:43
    " E! ?: a" H; D) T/ _
  11. , m$ W- X. ^; N) A/ B% [$ x* l4 l
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    " R1 o. H& J* Z, e$ r6 T' p
  13.   h3 H- X& c, X5 b
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    7 N: A  W8 o0 i4 b) d$ n' G+ }

  15. : o: {( r* z8 j, Y0 A
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是4 q! Y* _/ v) {0 |- n. y

  17. ( q& n1 O. L5 W( P- j
  18. $margin = 2;//边距
    ' W- h" r' X& g7 x! C

  19. ) B+ u! G' \. K( C
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    7 W: R& e$ X2 s4 h& e
  21. 7 R; H7 d! a& H# j
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   ) v3 i! _# r! i( _/ P

  23. " J- T$ d+ S! X1 I, T
  24. $QR = $picPathAndName; //已经生成的原始二维码图8 H7 _' U# \; g" B+ L% Y
  25. 6 E- L& B1 J; b- a% y& B
  26.     $Logo = './pic/logo.png';   
    + Q# _% n2 K/ E  o: a& V: D

  27. . {& i- I9 n; }
  28.     $Logo_re = './pic/test_logo.png';   
    ; p8 O4 J9 y, c9 m. h8 g& ~

  29. . D9 O! Y1 F5 m- r% c
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    7 \) N8 c: Z5 Q4 ]. k

  31. 4 T0 ~! Z/ [: A( P3 A7 g5 f7 z: p- {
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    * I: S7 h! _) c; w1 O. L# r, }

  33. $ Y2 S; y' z0 o/ b# C( q
  34.     $QR_width = imagesx($QR); //二维码图片宽度; M8 ~' y' d" F& s7 o6 K0 g5 \! O  k

  35. + m/ T  S1 T, r; Q" X
  36.     $QR_height = imagesy($QR); //二维码图片高度
    9 j+ J% F0 B1 w( q5 Z/ I0 T/ e

  37. + a: d3 J0 u% M, v. G2 m% }3 P
  38.     $logo_width = imagesx($Logo); //logo图片宽度9 O' N( S' t# h- Z8 [
  39.   U% B  `3 a  W0 e) l
  40.     $logo_height = imagesy($Logo); //logo图片高度
    + m# ~2 ~2 y( w, x

  41. 8 v/ q7 y1 j  u' O1 |/ u- v
  42.     $logo_qr_width = $QR_width / 5;   5 Q: |- h. [9 w: y5 k4 d
  43. 0 |6 |3 G# D! c& T' o- R
  44.     $scale = $logo_width / $logo_qr_width;   ; N/ w3 I8 E% }' e& ~% z

  45. + D6 ?8 H8 N. a2 J
  46.     $logo_qr_height = $logo_height / $scale;   9 S/ g7 ?% s2 t! j* ?8 |% y

  47. 8 A# s( e( \4 U6 ?: q; ]  J
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;% ~4 N7 }4 E6 t. l3 H7 Y" Q

  49. 9 y( }, V* n; g% Y9 U  L
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ( t3 H8 `, u/ {3 y7 E( d
  51. ; I2 ^! J; M  X, p
  52.     //输出图片6 n0 |, m' R0 A1 f/ ?; s" E# c1 ]- _

  53. $ Q9 n; e6 S0 w& U) I  V
  54.     imagepng($QR, $Logo_re);/ \: C  I. ~/ M" F
  55. " d  H" M& z" b+ K
  56. }
    ) \" L! ^) D6 a" k6 T' q5 Q" ~
  57. ( d6 |% a- R' j, t8 ^

  58. 6 t; v* h: V' a% d: Y4 J
复制代码
3、qrcode_vcard.php (生成电子签名)
3 I; _* E) c0 \! c4 G7 p1 W. C4 D& Q# g2 \9 Z3 A2 J  N
vCard格式:https://zh.wikipedia.org/wiki/VCard
' ^/ ~5 y4 J* w: x; }/ Q, k% x9 ]1 i! v3 `) A# _8 a
  1. & F+ q' o: G# h& n' M$ ^* e5 J! e
  2. * Created by PhpStorm.' [3 L, O" t9 ?% P6 O: a' w+ K

  3. 7 E$ ~. j0 Y$ }
  4. * User: user$ K$ C! v8 a; ]8 z; a2 I( A
  5. & t  I+ n, r# K- q* b
  6. * Date: 2018/8/15
    " @5 }1 x- g6 {
  7. ( E! `* L3 y. T0 n! m' _) O/ K
  8. * Time: 23:00
    + [6 E' O0 |& J7 w3 @
  9. 7 D1 L5 [6 e- a7 L) B
  10. */require_once "./qrcode/phpqrcode.php";/**
    8 d* W! i5 C& l; O2 q
  11. ; w: Y; f. t* s3 q6 y# U5 Z
  12. * 生成电子签名' b" }; O6 _" q- D8 Z
  13. / i% E' F1 W8 y9 J6 F
  14. * PS;使用微信扫描二维码. Z" P4 C6 S" m

  15. 4 P7 i# V7 \0 Y, f* n; u$ Y
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    % t* \& s$ G8 ?: U
  17. ) N2 q0 e: c* K, b
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    6 y# E! u2 k" U  h

  19. ! D  _# T1 F! }. B$ f$ l+ S7 {
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名  c* Y7 a; j$ v9 M1 F4 B8 b

  21. , K  D% Q) |5 p( V! n  B
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称) p$ w0 c; `5 c. ^* o! Q7 |
  23. 0 w0 f; z- G( O
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位" r8 X; p6 q3 h8 z/ ]0 j* b

  25. & R2 i* L: \/ R( P
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ; c/ \6 _$ C* j. d2 U6 P$ [
  27. 6 |( g0 n# A8 B( O5 T  ~
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址: a* z. R& H2 c# `1 A3 s$ m

  29. : t+ i) V  n$ o9 d' _! f* r! e
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    " }7 r0 ]$ o) ]2 J6 c- Q& n3 \; R9 e9 H
  31. ; `6 G/ [5 S- J- o* j
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    2 `+ Y* X( k" T3 s! ^8 Q& x& X
  33. " U5 f: a, w. I! ^# c) S8 ^
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    : q: F8 G; y# p! M# c
  35. 8 y+ W- g4 [0 D: I0 O: L2 `
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    ( ]+ |9 Q- J( I3 ?& v2 w
  37. 3 M* Q8 Y& v, A: t- o
  38. $content .= 'END:VCARD' . "\n";//结束标志
    + s: Y( l  u5 E: b. W, M3 N: i. u

  39. 3 d" c3 e* p4 i
  40. QRcode::png($content);! T5 w6 W5 }% S" \1 l9 a

  41. + G* H0 H% j0 C- L7 W2 v

  42. 9 S: n, n) u' [# d! P' N$ R2 ^
复制代码
1 e0 ^0 E# Y0 D
相关文章推荐:
; C# i  {4 a1 ]. U" T1.PHP生成微信二维码实例
1 u9 w: m8 o2 c2 N2.php网址转换生成二维码( W' Y% x+ I3 L
相关视频推荐:8 ~- |) v4 b5 z4 W
1.独孤九贱(4)_PHP视频教程' H, P7 N8 \/ s7 o3 w8 _4 F
二、JQUERY生成QR CODE4 k5 D0 l- D% U4 m3 A4 I
源码地址:https://github.com/jeromeetienne/jquery-qrcode
/ i9 S* Z2 W, j& A7 N6 m3 k' E! z8 i' D
jquery_create.php0 T7 w8 p9 H  X  H- H

4 h5 O2 }  ~  e) e2 n
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
' q- k9 c4 r6 F7 ]3 r$ P
三、PHP识别二维码5 O% Y7 E5 t& S: x: F% b8 C
1、方法一  Z& v' ^, z. Z5 ^) r
环境需求,安装如下扩展8 u" @- E/ l. @7 H' T; \
- ImageMagick) r1 u& v# q3 |
- zbar4 x7 c$ C5 t  |  ]$ @
- php-zbarcode5 b. W2 m4 D% m5 H. m

1 a' y! P! Z- y9 H+ ?$ I2 g* b2、方法二
' Q  L8 S- d6 j% N% W% C+ W6 r* tPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以2 W4 l8 s/ z! [5 Q; j: Z
qrReader类:https://github.com/baagee/php_QrReader
# [! n- R# p8 A& v- z+ i& |, {1 C& a8 K0 L, b( @7 w

  1. 6 Y4 g2 a1 M' C" a! K' d$ y8 G$ i' @
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径8 P- P! I  y+ g

  3. 1 W; E% j( `* D6 Q; s/ w& ]; Y* V3 G
  4. $text = $qrcode->text(); //返回识别后的文本. [4 r% p  b3 u& H! A2 v' R
  5.   w3 j, {7 F7 I6 L
  6. echo $text;: s; s  w( {, {
  7. - n" O8 }/ |0 [5 i2 a
  8. 4 c6 j/ J+ l$ T4 i' j# L
复制代码
3 i9 h2 c( h6 t2 g) Z& x! c& R1 j& F
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
) z& p; l9 v2 X: Q. T
& ^* t1 K) P: Z- a) `% q% P6 }$ l) N6 B

; _% u( h4 ~0 U# c
! z7 ?3 d7 r, @3 f( E2 q! x+ X0 s, A; A" C* L
# h+ B* J  r/ Z0 B1 A

6 K* R" H+ F* ?7 u( h, R0 u
8 i2 Q. I- T# P: y. _! c
* g0 F2 n; ^8 y1 f9 r: i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-20 23:49 , Processed in 0.067186 second(s), 22 queries .

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