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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
& h3 s4 }. u  u4 c7 [( @: d/ y% c" u---------------------------------------------------------------------------------------------------3 S- J# f2 m7 Y
二维码的分类
# ~7 v& r% b3 \  y) {" \线性堆叠式二维码
6 o! u& t4 Z/ J1 H+ }0 ?+ z' }  z: ]7 Y0 [+ X3 H& g% }
矩阵式二维码
* |7 F: a; `7 `8 w# X- D' G" i+ J: l7 b# t+ L  y9 g3 k/ b4 N
二维码的优缺点
+ E: O! W1 t6 J' C9 s优点
6 e5 x* M. |2 a* A( W信息容量大6 G7 L9 |0 H, A% i9 i! l4 z
  K, n- j  N2 [. w* p5 p' ^
编码范围广
3 v- E1 h) w" ?  q% o/ I6 ~0 z: {* u% ]2 J: t* M
容错能力强1 q+ X9 k3 ], _- u3 A; V) R9 V

/ F2 A9 J! p2 V  r( b  ]- \: B译码可靠性高
, ?1 a& Y: X8 e. {# u" g  Y* @$ [  ~/ R9 o0 a1 d7 E
可引入加密措施
' C4 p$ L7 i4 Z# m1 k6 q
9 }/ y# Y7 I; Z1 V1 o1 t成本低,易制作
1 K) ~; X+ {( y# Z# a7 P2 _: R1 Y' b6 z" k
缺点, W+ }, u. O5 O# T
二维码技术成为手机病毒、钓鱼网站传播的新渠道
# V; O, @) t% v7 v, C8 a2 d( i. k
信息泄密
6 H$ Q1 l' {* v- V6 D/ j( C1 q- b  y% m3 i, e5 D
目前流行的三大国际标准
. o- O" A: _" o8 w3 S( g; oPDF417:不支持中文
# R8 `; b! A( g& U. |
9 k( z" f( ~' w1 S1 i/ Q( ]DM:专利未公开,需支付专利费用/ c. c& T  x% ?

( b% C8 ^. D0 q' u# ]QR CODE:专利公开,支持中文
1 ^. \2 z; B* U$ F) B# o/ h6 g+ r( k" o; r) y
QR CODE 纠错能力3 H, W6 k( f- q9 F# ]
L级:约可纠错7%的数据码字
. N3 t6 U9 ?, w- _( M" p
. C6 Q+ z9 t1 XM级:约可纠错15%的数据码字3 n- G$ ]( A/ f5 J/ W- ?- T
2 `8 w3 a) v0 ]$ C
Q级:约可纠错25%的数据码字( Q: A' m4 L3 ]* y' A, m: W1 `
9 N, x/ z5 z% I0 C/ c6 B) `
H级:约可纠错30%的数据码字
; k6 Z. L  T, M* S! K. X1 V" b* ?, v! [& S
前提条件
6 b/ l8 m& J( d1 N# `, Q9 {GD库
& t, o; v, v9 F7 j  Z0 s* ~) O7 c# \% g7 L0 ]  G' n( l, o4 E( o; x
一、PHP生成QR CODE! Y6 [" M: ]; i9 C" H
官网:http://phpqrcode.sourceforge.net/
3 z$ M9 P) J( R6 p" y
3 b* N) {# N  O7 i/ _0 G下载源码:https://github.com/endroid/qr-code, m9 \+ V6 i9 K2 }0 a& q) o& L, `
/ J/ q3 O+ s  ^3 Z) L1 i3 N3 V
目录结构
( E  \, o' q) u2 y8 D$ N3 l 8 [7 h$ p/ U5 C

2 O, j4 ]9 I7 q* G1 X  ~1、qrcode_create.php
: L  I/ B5 i+ pps:生成普通二维码3 y& B; a# m2 D
  1. , }% R1 [5 T8 q% _7 Q
  2. include_once "./qrcode/phpqrcode.php";/**5 Y% E0 @0 R+ A8 T2 X

  3. & @* V8 P! M. |7 v6 b& F' G/ S
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径  R5 u# n: e6 W9 }3 e0 u3 D

  5.   l, u; U( [* a/ c; v6 Y3 b4 {1 }1 J
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    / I8 ]' _, X, A, `% d

  7. / A% v+ b, ^( S4 n$ Q* P
  8. */QRcode::png("abc");
    - e/ n1 \" j+ q: x, }5 K
  9. $ J# P* h, y& F( A/ L- Z0 ~
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**- ]0 F+ {$ a4 A- E0 y& @0 `' _

  11. + j) x$ E3 B4 j
  12. * 生成文件到本地* D' \- O6 g5 q6 a
  13. 2 U' ?! u. g( u5 D. y
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    * c) C7 d; ?! C* b

  15. ' D7 p7 p/ a/ O) V; t) Z2 ]- d
  16. * PS:$saveandprint源码的p6参数做了修改8 R+ g1 R# n: w, w
  17. + z* x7 L+ g! S
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);- O: b6 P+ T( Z, d
  19. ' @9 A- L( X( ~

  20. - s* h9 b* |, E( ]3 b1 ?& l* S
复制代码

  P9 T0 w0 Z; x( H2、qrcode_logo.php  r! |4 u% \9 S( q0 v7 W2 Z
ps:生成带Logo的二维码

  1. # y* h* t. y; Y
  2. /**
    - u5 }7 R0 u6 v& I

  3. % ?- ~/ F6 u; e7 I
  4. * Created by PhpStorm.
    7 |$ W8 n( p/ F2 \1 E3 A) a# w( w

  5. / o8 y, i" d/ X* z% n$ ~6 d  z% T9 D
  6. * User: user& J9 ]8 S4 f& @8 D% t3 r* W2 y

  7. ; r. R" A6 d+ d; @; h( S
  8. * Date: 2018/8/167 u$ p( ^5 K4 B* f

  9. # I. s  c# V3 k) h
  10. * Time: 10:43( }1 x  i7 [8 Y' {

  11. ' x; }# n" R% _4 O" x7 H- c
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";! t- [0 [5 i% S  \8 v

  13. 7 p* S! ~) Q  B* A4 X4 t" h
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称1 o! ?- F( n. _0 z3 r6 s& v

  15. * b( g8 x. _3 V2 }
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    - v! p5 }4 V" w' w
  17. & v$ r* j4 Z2 _. A! [. d
  18. $margin = 2;//边距1 Q; [, b7 l  v* i
  19. / G4 F2 m& F# I; {# L) Q, L8 q
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片& R+ J& u5 X+ q# ^9 U9 E; y. a% O

  21. 0 G" M0 \; y; L) T/ e
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    0 a3 z3 ]8 h- O1 W8 j

  23. 6 Y+ @& u8 E- j0 f$ S
  24. $QR = $picPathAndName; //已经生成的原始二维码图6 l$ c# c9 a6 O0 m
  25. 5 \* y1 w4 o; V/ z
  26.     $Logo = './pic/logo.png';   
    2 f- k2 z- F- c. f' D$ u3 h% ]+ ~
  27. % y$ o% f- @' }3 o
  28.     $Logo_re = './pic/test_logo.png';   
    # P, J) b& B# u( n

  29. 9 j* v7 a  ]! j) D4 S
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ( r) U: D  A" b" @  Y& ]
  31. $ q+ }  K  L2 e" r) s7 m0 v
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   ; D3 V4 _" _" y; N5 f; x

  33.   _1 S2 z  T6 c$ d! I4 e3 y8 y
  34.     $QR_width = imagesx($QR); //二维码图片宽度' v% d4 N. W" x1 K3 ~8 p$ D
  35. . S! n$ d8 C4 K( i  W+ E: v$ H
  36.     $QR_height = imagesy($QR); //二维码图片高度
    4 @3 B5 G& _1 L  u$ x
  37. 6 }8 g* u9 T. b. J* k+ t
  38.     $logo_width = imagesx($Logo); //logo图片宽度9 N& r9 x; o" z2 Y. ]. {

  39. 1 v5 H4 K7 k. E% w: ^  w
  40.     $logo_height = imagesy($Logo); //logo图片高度3 G! ?, P4 g+ N. q$ w* X
  41. ; q; x& D' f& N3 F* ^6 l: D9 s0 v
  42.     $logo_qr_width = $QR_width / 5;   
    7 O! ~! u' B" ]3 i

  43. * d3 s0 R. O5 r5 D( R
  44.     $scale = $logo_width / $logo_qr_width;   
    ; s% |1 Z3 V7 S1 h, J' e* p1 p
  45. - m2 I9 z  f) A. _8 ^) E/ P7 c
  46.     $logo_qr_height = $logo_height / $scale;   5 k* Q* |; H5 T9 }$ A" {
  47. ' n4 x- |, S9 e( z
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    5 X, ]' N+ R, v' M3 Q  w

  49.   c9 q* ^9 A/ t  I. {( S, H
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    & A0 ^# w# o$ h  q% v6 `

  51. 1 A- l  Y2 Y) ^
  52.     //输出图片: B7 @3 F2 {6 ~

  53. # m* ?- r. {3 Z" r' |  [
  54.     imagepng($QR, $Logo_re);
    * m" ^- L5 v# Y- t' w1 o7 r* \

  55. 3 J5 e: I# \/ X7 n, v3 J7 L
  56. }
    $ H! T% d& j7 E3 E
  57.   W+ B( v7 ~" k- j1 n; v9 W

  58. . d; m1 s% h3 b
复制代码
3、qrcode_vcard.php (生成电子签名)
" ]8 k! \# f; X! H
% ?4 j& D$ I/ }( m, c4 m  G8 kvCard格式:https://zh.wikipedia.org/wiki/VCard
6 F* R7 H0 J2 m
* @' X; ~/ \  l" ?" A# |& ^! _) j: l
  1. ' N/ C# T2 x+ ]6 Y( |6 B+ O5 g
  2. * Created by PhpStorm.
    , u2 ^% i, h. _. r0 R6 U

  3. * F. J2 R: f- s# q
  4. * User: user9 F2 t1 C% A- \

  5. , ^1 `3 [! A- _8 L& ]! t6 d* }
  6. * Date: 2018/8/15
    % g9 {! \. V. q7 s) t3 S+ y
  7. # [4 f! X8 w4 w9 V) G' x! c! H; N
  8. * Time: 23:00- h, ]5 P7 ^. w8 r# d4 G

  9. " f/ N$ {9 ^  C  Z3 \& }. r1 }+ S4 z' J
  10. */require_once "./qrcode/phpqrcode.php";/**
    8 {1 h0 D! A. N6 V+ K; F
  11. 6 n) {: n- F( f5 E! e
  12. * 生成电子签名
    ; h' v. z& r; M+ {1 g
  13. 7 S3 L1 d# A% Q
  14. * PS;使用微信扫描二维码
    & B; t0 Q: |* o9 n

  15. $ y* h4 j4 o( P! `. i: `$ U
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    ' b; _. f# e! d; c5 @' Q4 \
  17. 1 c  F9 i# b; _( k' d, a* \
  18. $content .= 'VERSION:2.1' . "\n";//当前版本. M9 E. w3 p, b
  19. 3 \: S( ~0 w4 @3 g
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    9 ^( a3 @- _; N1 X* T

  21. , ?/ f3 N* D) _; f4 [4 {
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    & p& N" L+ b6 U, Y- i
  23. , @" M0 l+ i. n3 O4 Q% b# [- u
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位
    * S8 P; @; _& }9 V; e( Y4 ^
  25. , q8 Q$ g& X) b* D& _9 \6 p( T
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话, t5 r5 Y& g* }  t+ M

  27. 3 b! Y4 B# u) j, F0 A8 \
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址# G9 E6 n2 F: T( n0 k: c9 v& b5 S
  29. ' i9 Q5 R& g/ [/ z6 t& c9 x
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)2 X2 c  o7 Z9 y0 t1 a/ y
  31. % J, }+ c- ]( E) @
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    5 ^& @# ]0 ?1 q

  33.   l. j6 Z* i/ ~2 j7 }( l
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    9 G7 y  x* C/ U
  35. + h" {# P0 r! [+ b/ `! j8 X
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页* X/ K4 M$ y; }% M8 x7 y

  37. 1 W0 }/ v, d7 H. k: I( f8 G$ j: [
  38. $content .= 'END:VCARD' . "\n";//结束标志
    8 x: I) x" B# e8 S
  39. & l) w! ?: R4 q4 e( I% S
  40. QRcode::png($content);! B5 v# `- d" i, S. U/ I9 a5 f( J
  41. & Q6 `4 \: k  Q; M7 G! {* d7 w9 S
  42. , [! x8 e' i; T1 m
复制代码

" C6 H2 h9 Y. H) |3 A相关文章推荐:% d1 O! i7 k0 c
1.PHP生成微信二维码实例
3 X- S: i3 P5 E2.php网址转换生成二维码6 N$ r$ }  F$ Y* c
相关视频推荐:. B# L  F: x- K  ~. h; h2 L
1.独孤九贱(4)_PHP视频教程
0 v  p: L/ Z4 G+ b$ [$ N' k; q. m二、JQUERY生成QR CODE* _0 w8 C% v$ S# Y7 q# I' {
源码地址:https://github.com/jeromeetienne/jquery-qrcode
$ L4 h2 n  _# T8 ~; r" Y4 s) l! c* o- H/ C
jquery_create.php: s6 f& o; J3 K# p1 w. V/ n7 Z

5 v1 e7 Q6 W) b5 R. `
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

6 L5 m+ m: W) D: i# P4 }三、PHP识别二维码; n. B8 v% G: R% G+ a
1、方法一
+ V" j! s, }4 x/ G0 @环境需求,安装如下扩展  t0 N4 d3 Z: J0 U1 X0 j
- ImageMagick
2 N- k8 j: u3 w3 o- zbar
6 J/ O8 g% w' @8 i0 p- php-zbarcode3 w/ E: }$ j+ B+ M7 x! n7 V( @+ _" J
! ?$ T( r$ f' A" F. U/ F
2、方法二  Q, ^: D. Q) Z6 I; [
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
+ c8 }6 {$ [) l2 @qrReader类:https://github.com/baagee/php_QrReader9 b9 A8 @9 J" Q0 u7 v3 u0 T4 |& c

/ ^* N0 b7 O* \) D8 k* N$ p
  1. ) ]  d9 y$ n. I# Q$ |6 c7 t
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径* f, \; Q1 ^4 m9 ?; U* T" \# c
  3. . c) i0 D6 O: o/ q
  4. $text = $qrcode->text(); //返回识别后的文本
    4 |% k% X! o0 L. ?9 u
  5. , G) `% T* u: [9 v- S6 V
  6. echo $text;
    , j7 L; S: M9 o& m

  7. 7 C$ i. e$ r; n4 @" _1 u

  8. 7 {5 ^& d. d- i4 V/ P
复制代码
5 `3 m* j$ z9 r; A! e7 C% x
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7
6 b0 Y3 z/ q. n! s* z0 i% ]" i6 T, k* R; a4 @- n

( y& L+ [$ T! B6 m, Q/ c& y& T
/ ~8 ^' ~8 t. O- o  a
' C! {5 ^. {: `4 n4 U
0 n5 x* n: ~$ }& U; |: X( ^
* n: z; I7 U+ F% ?- n( t
6 w. c, J" X1 U( s: X6 U# c6 Q4 k0 N, x$ ~
( e! B0 p' C+ m' H) M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:16 , Processed in 0.060603 second(s), 22 queries .

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