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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
( B6 N8 F6 E& C- g* O---------------------------------------------------------------------------------------------------( `. A( v4 S) x
二维码的分类: X8 X+ M# T. }3 C
线性堆叠式二维码- p/ L- u+ w* L+ f& f" h

2 t( {) X: |4 ^$ w+ H6 w矩阵式二维码
, S, y- S# E. A- g; l9 B% ^, T% K; W. h9 ?; F7 k
二维码的优缺点. V- x2 j  F$ o' f- [
优点
7 R. J, b2 j0 g' P' v8 Z% _: k; l, M信息容量大, |1 t9 @  D1 ^, n( \- h

/ b) k% T) o5 G' I. B, g3 b编码范围广( F( z6 i$ I: t* b

7 c! A2 J- Y# S4 q$ p# E3 ~容错能力强) t( T- K6 L5 R' n- J
$ ]+ E, Z4 v! _4 H$ |) O3 O1 _) K. |( `
译码可靠性高4 S7 e% e: z( v  w5 x8 F- E
! h+ w+ o4 v9 D- q  o
可引入加密措施; x1 ?% [$ m9 E1 |8 ?8 F
1 a# K0 }) Q/ g9 @: X1 O5 v/ }, v3 {
成本低,易制作% H2 t0 I. x6 x; W1 ^2 v
! M* A. `1 a( h; Q! K0 l0 X' y
缺点+ J% e4 @$ @/ H! I& E. D* L
二维码技术成为手机病毒、钓鱼网站传播的新渠道$ P% Y: g4 B' H0 \2 ~6 `' P
5 ]; w2 Q4 a1 P, x# ?) B
信息泄密: E) I# L2 _' \$ N1 _; T. H/ D8 L

+ S- x/ z1 n" Y目前流行的三大国际标准
- @- q9 x6 f; F0 I4 B! G1 O) C# f  E5 kPDF417:不支持中文
3 X6 N: `# F, t' h. a& ~" T2 p
* |9 i( H( R! ~- W9 O9 O% @DM:专利未公开,需支付专利费用
( u* B$ W3 j. Y. J: i
9 m$ z' m9 M& c) D* jQR CODE:专利公开,支持中文$ N( i- {- k1 d: q8 ]' v
1 C* ]1 s. U" g  E
QR CODE 纠错能力( t8 O! D) T" V0 }5 o) ^, {
L级:约可纠错7%的数据码字
  t% _6 h& ^0 M, J# Q  c) [( F' J  V
# A' a! g6 U8 `2 Q3 fM级:约可纠错15%的数据码字
, w! N0 F; V* N& p  g4 X( ?7 B6 P7 b9 W+ {% x2 R8 X2 i% g
Q级:约可纠错25%的数据码字
$ I6 w$ j0 i8 q9 |9 p/ |
$ ^% ?5 [1 l# d/ XH级:约可纠错30%的数据码字7 q2 }- E+ b) }
( K) ]8 E* e5 s7 G% f) J
前提条件2 l. |' I6 o8 c, L5 M
GD库" B3 b" a& B1 E
9 l+ S5 B7 C3 z
一、PHP生成QR CODE
# |& c5 A9 |- v! X官网:http://phpqrcode.sourceforge.net/- J; \# S3 a9 d/ Q; l
/ O0 T7 e* q6 P3 h
下载源码:https://github.com/endroid/qr-code; o/ ]+ Y2 _0 r/ `# {$ H, o- M* c
/ {2 W8 S$ k/ M
目录结构3 ~7 D8 g. z" f/ k

( g8 M" a# H: h# Q! n/ ]- n9 p% S, t
6 c: c1 ^, Z8 w7 r- H1、qrcode_create.php! `! A$ s- t; B( ?
ps:生成普通二维码
. t' W; {) Y& Q2 K1 b, W
  1. : U: v3 |0 y( [' H5 |6 _5 V+ q0 }
  2. include_once "./qrcode/phpqrcode.php";/**
    3 ^' Y% `1 \& U, Q

  3. 7 v6 [" t% M7 h
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径/ g' z. D: ]7 e' X3 |" p2 m  s

  5. 0 |, |! Z- b  F) N* x
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    ) @  y% c2 z  N
  7. 6 A- [* p0 y+ w; o3 H: |& C
  8. */QRcode::png("abc");: w! W2 C. y8 A( Q5 \) u* {8 l' B' K

  9. + K/ f; B3 t9 o* S4 B: n* o
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**8 s% A0 P( \4 t, Q

  11. , n: z' R7 A, f
  12. * 生成文件到本地4 U2 p# l- f6 s4 V' H3 I5 v

  13. ; |* x% b) w2 b( J. K
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)9 o3 r6 I* x1 |( v& N
  15. 3 l4 H0 \( h" `! _  H
  16. * PS:$saveandprint源码的p6参数做了修改, c9 x% `, S: m! J

  17. 2 s" J; o6 e2 f/ ^
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);$ ?/ v4 G/ _: p: F8 u$ ?6 S
  19. / Z% D" u' J7 D8 U9 q+ e* s

  20. 1 @+ L1 f7 n  k7 n
复制代码
& w9 ~( M# B; ?/ D
2、qrcode_logo.php6 j1 F3 `4 R0 l/ P3 t2 c; L
ps:生成带Logo的二维码

  1. ) y5 H- \& C; B5 n) F
  2. /**
    ' ]4 g  ?9 }1 d0 L4 X
  3.   o& i. Q* H9 c) [% e+ X$ m7 R
  4. * Created by PhpStorm.2 o9 x3 d3 S3 P7 p' V
  5. % g5 X  o8 N0 |+ j* r9 _  e! q( S
  6. * User: user
    7 ^& C% P/ i' N0 b
  7. 1 D$ a9 }- D+ W( i0 S
  8. * Date: 2018/8/16( h! A* ?$ a/ J

  9. / U  U9 H2 a7 H# Q
  10. * Time: 10:43
    7 C/ Y& {' P& T4 h8 _' M% W
  11. 2 K) S- c6 ^: Y+ X& G
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";9 f9 p4 P& e1 H# u- ~# y
  13. , b! q% j: c; |( N
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    - K( F; v5 _0 b5 e* m. |) m
  15. $ M: B5 r- [) L) ?/ g5 o
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是% k# k1 o2 _6 ~1 d
  17. 9 }9 \& |% ^0 d- r, e
  18. $margin = 2;//边距
    8 f; n4 {$ y8 Z! Y& e

  19. 0 V4 g  U2 ^7 W7 r; r! k
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    & F& b! l6 e$ |& Z# R; C: P) b
  21.   |/ o9 \# E( F5 X0 R! k
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   0 @. l! Q/ `3 b# ^: y" v

  23. / E! i2 z0 Z) ^9 S9 O
  24. $QR = $picPathAndName; //已经生成的原始二维码图+ N9 _% B# h' e4 O8 ^* q$ R

  25. ( p: ]5 x9 |- ]& y; a
  26.     $Logo = './pic/logo.png';   
    ) O  _! L4 R+ a

  27. 1 ]0 W: i) {5 G( K3 h5 I, ^4 L/ T
  28.     $Logo_re = './pic/test_logo.png';   
    7 O' a' q: o3 G8 S3 b- i2 l
  29. 2 }' l. [  S: n
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    # ]: u5 Y9 P: A5 H% ~% A) H
  31. 0 z& G( g' C, z- w
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   * f3 d1 ^) n, T3 @

  33. 0 G* P) Y+ w- B" x7 ^9 W
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    ! E- `: B) u* b
  35. : H/ ]4 D, ]6 G- g
  36.     $QR_height = imagesy($QR); //二维码图片高度
    8 r5 T# Y' k6 G5 Y

  37. 5 S. t: |, [8 L9 D
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    7 K9 k% r! c/ j

  39. , L  g5 ^+ Q. T7 E4 f( r( t
  40.     $logo_height = imagesy($Logo); //logo图片高度. Z7 b+ P& x  f! V
  41. ; r- V- H0 C4 ]; v4 d. _
  42.     $logo_qr_width = $QR_width / 5;   
    + S; P) f# P9 Z' @% i
  43. 9 w2 {+ L* J6 j
  44.     $scale = $logo_width / $logo_qr_width;   
    " u$ h1 S: j$ Z* e. d
  45. ; ?# K0 b& X3 K+ z
  46.     $logo_qr_height = $logo_height / $scale;   - @0 M' n! T- z; ?

  47. . x: V1 n! ~7 f( Z! @9 i( F8 D( @: O7 g
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    6 s0 ]% x1 E2 J
  49. 9 ?, W& G& @1 {2 r, ~
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   ) Z' Y9 f2 b# M" X
  51. ( q6 g% O- q2 x3 I4 u7 d$ p
  52.     //输出图片2 N5 Q. d! M& L7 U& J

  53. ) N8 `, i, x* m
  54.     imagepng($QR, $Logo_re);0 p8 _; {3 W7 a8 }/ d

  55. 1 K: I# q2 g/ J5 a0 y6 F3 U9 J
  56. }
    8 u. @/ v$ U% C8 D, P) C" s1 Y+ A

  57. ! F1 P- T& K4 }6 j# a* `

  58. : n! @# b. z& q* K" ?& }
复制代码
3、qrcode_vcard.php (生成电子签名)9 f0 b: d7 z/ d, {

1 N, y; N3 ^4 D1 CvCard格式:https://zh.wikipedia.org/wiki/VCard: ~" W. [' Y1 h- J! l# K0 ~, m
0 m6 H6 y- u( P* E
  1. - z. u  y8 H+ {, W" f7 s0 Q7 I
  2. * Created by PhpStorm.0 c4 R/ F  F+ H
  3. 8 h0 M* f1 ]; [5 A. W
  4. * User: user) X4 t: f( U* y8 u: Q: d6 H

  5. * |3 K# R" w9 R6 {
  6. * Date: 2018/8/15& \1 b4 V3 Z; C- y( E5 b

  7. 4 N! M2 p4 v4 R  X
  8. * Time: 23:003 S. O/ ~; f' U' K" w/ u7 e
  9. ; |  M) G8 n& a3 }) s- \7 v# A1 {
  10. */require_once "./qrcode/phpqrcode.php";/**
    + e# x( h! |* f' G2 E
  11. " _5 g' a! @# x7 p. w& J
  12. * 生成电子签名
    * Y# M$ G. H6 N

  13. 8 D  ^+ t, A0 F( y  [" C
  14. * PS;使用微信扫描二维码
    7 L) k! D  y* o! x

  15. 6 K8 e' q7 V( }( a, D
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    1 R* t4 Z5 h+ \

  17. 6 n% ^# e2 B7 W
  18. $content .= 'VERSION:2.1' . "\n";//当前版本2 ^/ b: n6 n0 H/ B# p

  19. ( s( \% P' r7 ^
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ) _  u! z+ u: O9 h& K# {

  21. 6 r8 g8 d* e: J$ g
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称2 u# U: t3 D! b; a3 _$ J3 A

  23. 7 s( [) b9 p9 p; w' h0 ^4 \, m
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位$ s4 s( b- v5 |# x' k' P8 j

  25. ' t: I6 s+ O! U
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话5 }: ~7 g+ ^1 M, i
  27. 4 S# c; ~  x2 _8 }
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    + ~7 u) h; V5 j& h' ~. @

  29. ; k$ _' [# [9 s) M
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)% M9 y7 g, G8 X+ Y$ o7 l5 ^
  31. 5 ^! o& d+ j& j9 G) c
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    + y; t/ ]1 s- O$ d. a

  33. 1 ]7 q4 j: l0 h
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱# N1 o# D/ r7 m2 \0 k2 S
  35. # C& F+ \4 y1 k4 o, J2 \$ J9 D
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    9 b7 }/ l: \! E  O8 t& j% o0 X

  37. ( f4 ]1 u# E3 Z8 i
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ! h7 f# s; b2 `
  39. 0 U# E/ T+ x; i3 C* r4 m
  40. QRcode::png($content);  e7 m5 F0 }) A+ k' a, J

  41. 0 F# H6 D5 @7 u* }

  42. & |+ {" u* X7 M  v0 G
复制代码
; P* f4 ~0 O; j
相关文章推荐:
8 R0 x2 q1 L  t# l9 X1.PHP生成微信二维码实例
/ p, @* z9 a) P  M% a2.php网址转换生成二维码/ O3 W0 B" W, J% V
相关视频推荐:
" h8 K, b1 i' _$ S9 E. n1.独孤九贱(4)_PHP视频教程: e+ P7 z0 q3 ?2 A0 \1 p
二、JQUERY生成QR CODE
8 a5 D5 t) O0 F/ w源码地址:https://github.com/jeromeetienne/jquery-qrcode
& U8 A  {( a4 I) g. W- ~) s1 I+ o: B& n1 e! F3 r9 Y* L
jquery_create.php
/ z! q- \/ B8 Y/ r, B
0 z$ N) D% R! C9 i5 I$ o
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
9 {  r) U0 P  x8 k, f7 n& a- Q
三、PHP识别二维码; p& e4 k! f4 w5 ]1 e3 e: I
1、方法一
6 j6 N5 k6 T, A环境需求,安装如下扩展
5 o5 \0 E% y3 ^; Z- ImageMagick
7 j. W9 S0 G9 u# m- h. \- zbar
9 |3 t" A" b  G2 a- php-zbarcode
) @+ c- _9 ]3 K/ |
  R  ~$ Q, G; |6 p; q( ]# [' x2、方法二- A+ q2 M5 v( v0 C; B/ o
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
  ]/ `( F& {9 d" K- uqrReader类:https://github.com/baagee/php_QrReader
" _0 j2 u+ m- H, [* M3 S, K4 d1 a! T0 K
  1. , E' x7 M0 y# E: j7 j  U  y
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ; s' g8 C( ^( R8 Z8 H
  3. & _* |6 A/ H: k9 ~/ U
  4. $text = $qrcode->text(); //返回识别后的文本- }4 L. e6 U. @. B- U: Y, N! J

  5. 6 W* c/ }- L9 \( t' p
  6. echo $text;
    . M- Q0 i. r( \, L- P* a  h+ [
  7. & U% d  j- B& E$ f' |+ \' L

  8. / r! G; J: u, [5 f# r
复制代码
; O7 m0 k" j7 g9 I8 x7 R
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7/ `! @8 B6 U' S! s8 f- F
0 A2 d. ^! D7 f- q

9 M+ z- ]2 Q0 l  d7 ^4 q. |# P8 w1 @# Y, Y, f. H
. B( N* {& f/ q0 D' z* S

! @) o8 q' ?6 v- V
8 {- H- B' v8 r; C- C$ v; _
. [  o' g! B0 D. e: }2 J3 i8 v. W5 Z9 A3 }8 H/ o

8 t5 F6 [, O& V) b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:17 , Processed in 0.055780 second(s), 23 queries .

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