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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-7-24 00:09:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。" V( G2 j4 _* n& X: I9 s
---------------------------------------------------------------------------------------------------5 i' E8 Z5 o0 O2 g4 s' c
二维码的分类
+ {0 t  _, r$ u6 u! J- A9 ~2 b线性堆叠式二维码& B/ Q, [0 H% b, E/ k

7 U# t0 X$ V9 d. w5 d矩阵式二维码% J, q# W- v7 d2 T

/ j7 \$ G9 @# m0 [+ W4 q7 E二维码的优缺点
) q7 q  X" i. I. t, K& ?优点
! e/ u' W8 K  G$ @- V信息容量大$ R6 |5 [9 Y% u- G, F# m
7 m& v3 C) H6 k5 K3 g
编码范围广
9 y: V. L( E4 Q+ S! f3 G  `
- t; h5 a0 |+ V) H2 v容错能力强
0 F* T& Y0 V, y8 l' x
6 Y# |! u; ^/ D; p/ s译码可靠性高, i: O. x" A' P9 Y; z' F% i7 S$ u
, d( }) m; c* P9 S! s0 V
可引入加密措施
0 c' P& u. G* }, Q; Z) P7 j# e7 F; Y7 g# y/ Z7 m
成本低,易制作
; x" B* `/ j$ K. K" g; @9 u
& ~8 p' u4 E, F, B1 R* n缺点# o$ _! j/ z4 u" n  U3 X2 a
二维码技术成为手机病毒、钓鱼网站传播的新渠道9 L: A9 @2 k. I

& W  j3 O% D! @- H信息泄密
$ S' d: l5 m$ J" r% c/ F) V( ^3 G1 u4 |. E+ r
目前流行的三大国际标准; Q4 x  k  w2 T; \2 D* v8 I
PDF417:不支持中文
4 l" v3 W3 W% t. ]( J% t* H% q8 S3 P
" V) z1 i9 i& ~% A- C% l# v/ iDM:专利未公开,需支付专利费用
" a' ~4 c  s5 ?, r8 C' ^+ A1 L* W0 n
QR CODE:专利公开,支持中文
; l6 r# b3 m8 B. g  I) X& L" p* h; P( Y5 }5 B6 t$ W% y" ~
QR CODE 纠错能力
# e7 ^% {2 i, w0 y0 m; xL级:约可纠错7%的数据码字! N  Q  R" k. U/ V
0 O! x, g" T$ N/ m7 r1 Z3 `/ p4 k
M级:约可纠错15%的数据码字
0 ]+ E$ F+ ^) ~5 d% {. V4 E% {" v5 w" ^8 o
Q级:约可纠错25%的数据码字
: b1 j$ V! Q9 G. }, y2 X4 @& O8 G9 g+ y2 t3 E6 n
H级:约可纠错30%的数据码字
! Y' q% j1 k! J3 D: |3 e
# P. U  `" v& a3 }% D前提条件
! }; @9 `! r7 A0 aGD库3 f* u2 l# w1 S; \, t
; s* p5 \2 d+ _4 z0 }1 |
一、PHP生成QR CODE
: ?7 S8 y' D% a* {官网:http://phpqrcode.sourceforge.net/0 e- s" M0 f4 J
0 \2 [" R( n: [+ x7 Z
下载源码:https://github.com/endroid/qr-code) U; N- h5 W) f9 d6 ~. u
3 `6 K8 E. C, B- X  v
目录结构1 H3 t6 Y% A- q+ R

8 `+ g# P, W' n- Y' p  C: \% p/ T1 L: j0 S# V2 Q6 r% z" b
1、qrcode_create.php1 L. K9 U1 c) k+ r& M/ a- [
ps:生成普通二维码: z+ [4 z9 B, ]* {' U9 e3 q. f, ^& K

  1. ' r  A' J, |9 _5 V* D/ P' h
  2. include_once "./qrcode/phpqrcode.php";/**+ c, `. P8 _( Z- e9 G  O% W
  3. 8 }- N0 i; ?- R# }8 R: w
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径, V# ]; r6 r2 h( _

  5. 7 |, z  q: O2 F5 u) E* V  {
  6. * 在浏览器上直接生成一个二维码(内容为abc)5 m, E; p- v! `; x# y

  7. % g- _% S! q# o4 h
  8. */QRcode::png("abc");* o  A' O6 S, n8 \
  9. & V0 i9 L0 M2 ?7 E
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    * z2 ]$ D9 ?1 G% |6 D2 g" k

  11. " ]0 U2 l" l; h+ Y$ p* [
  12. * 生成文件到本地+ R5 ?/ ], A( j4 k
  13. ' j1 ^* \0 g7 x; ?5 o
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    & C& B) O9 K2 J8 Z* X" G( H
  15. 1 F. b2 C+ ~, b! J, m. |" z; i$ N
  16. * PS:$saveandprint源码的p6参数做了修改2 o9 d" |! I% I5 A( l. d
  17. 0 N3 ]; x- g, i
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    3 _# U+ ]$ d! k. Q5 d

  19. ( ]+ |; Z5 ~$ }$ y, G3 p. y
  20. 8 c+ {; U& h; P, B4 f0 r
复制代码

3 W! e/ S5 Z1 \/ I/ A2、qrcode_logo.php
5 ?5 \! F& i/ c/ ?+ L  r( `ps:生成带Logo的二维码

  1. & d7 F2 F+ n* p5 B
  2. /**/ Y. L! R( p, s3 t" e. s) S5 F( a4 j
  3. $ r$ R$ ?- Q; Y1 l6 N6 w
  4. * Created by PhpStorm.
    ( n) {8 E8 F6 a/ i% u

  5. 3 q, g$ I/ k: V2 ]% J0 Z
  6. * User: user
    $ Q9 V* r2 ]# |) g5 ~
  7. ) l$ v/ g2 I' ]( G9 v3 Y
  8. * Date: 2018/8/16# t8 [; j" ^1 P1 i

  9. ( f! H* u) t) V# [/ Y
  10. * Time: 10:434 s+ U2 P$ h6 U: r/ W) G

  11. - M' [4 P+ F0 K  w; i) u
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";, ?  z* K' O; k9 ^  x* Z- G
  13. ; j: Q" r3 c4 b* ^( [4 V4 F8 p. E
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    ! L  E3 {# r* n% I) a# h+ S0 O

  15. " f- Q" k, C4 E( U9 q" C+ h
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是$ {- i/ X4 ?; _: f1 q: t% f5 b6 J

  17. : j7 }$ O+ ~; `: A2 k
  18. $margin = 2;//边距
    ! [$ P/ L$ U* |7 o( k

  19. 2 r9 Y2 U2 Q( G2 L: x
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片% c1 ^% T  S4 }8 N, {+ ]5 [

  21. ' G) W4 P. S. x
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   5 ]9 R2 V  k+ U; U* n9 g

  23. 8 |6 @% [: M. _* m0 @' e5 |7 M) c
  24. $QR = $picPathAndName; //已经生成的原始二维码图7 q/ ^1 j: k0 A" O
  25. ; }/ \( b+ `, K1 b0 q5 j; A
  26.     $Logo = './pic/logo.png';   
    # n& j8 P: c% c9 q6 A8 a, t( v  E
  27. + e( y% i( N3 C; V( G
  28.     $Logo_re = './pic/test_logo.png';   ! g: m0 v8 o# l, |5 \& i
  29. 6 P& I' h) C2 L& E0 P
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   ! ^: ]: K( b4 R- T6 [/ i+ |9 k
  31. 6 }: |5 v* e2 S" h3 T
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   
    8 ?+ \4 y2 F3 J% C8 f0 [

  33. 9 `, ]) R0 m6 \9 R
  34.     $QR_width = imagesx($QR); //二维码图片宽度, D6 B+ p2 e  `0 [

  35.   T; q- q5 b+ [9 {
  36.     $QR_height = imagesy($QR); //二维码图片高度1 Y0 J* A5 F% b$ F
  37. ' }5 Y% d. S, Y3 n
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    * q: [! Y/ m. p0 C" Y$ g" w: L

  39. % n4 W7 [; x4 \6 O
  40.     $logo_height = imagesy($Logo); //logo图片高度$ B# }/ k: k6 p3 h$ S+ g) R6 [

  41. 4 k7 _: v+ b9 \" D$ k5 V3 g! `. `
  42.     $logo_qr_width = $QR_width / 5;   ' c$ I: W( [+ ~% c8 `! O3 L
  43. ( ^+ M: @6 n; ~/ e
  44.     $scale = $logo_width / $logo_qr_width;   
      ~% M0 y! U% d8 i0 B; P# `! w" ?
  45.   ~3 E& N1 C; N6 o; u) O
  46.     $logo_qr_height = $logo_height / $scale;   
    ! V' o1 F$ b1 o: @
  47. - Q3 n9 I; Q8 f
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    6 W3 \6 a% E. o5 D+ N2 Q7 K
  49. ! e' q4 i( c* ]! t3 ~" u
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   / L* Z+ x# i8 s& h
  51. * H7 X& |' ^2 R
  52.     //输出图片
    , k  L9 w# v- n5 j
  53. & ]( [+ u' @$ Q* z6 u$ ]# x
  54.     imagepng($QR, $Logo_re);
    5 \4 q; X) Q0 R* w# W* h2 F
  55. " s6 F. l4 k8 W' I: L* H+ u0 {
  56. }
    / g: f: c  O; }% s
  57. . Z: _3 L% Y) x) Z$ D
  58. 4 V& P  P( b. s' w
复制代码
3、qrcode_vcard.php (生成电子签名). R! p+ i3 ~$ g+ b2 o4 ~/ ^( f; ~

$ e- ^" O" m9 TvCard格式:https://zh.wikipedia.org/wiki/VCard: ]: t9 {" R  U3 |5 s2 }
" `8 }+ a6 m* |7 p3 O

  1. * L$ T, }! T, }6 V& o1 U! `! m
  2. * Created by PhpStorm.# L7 C  k, M( {. P/ |8 }4 y
  3. ( J0 X5 D5 i. e) {8 l
  4. * User: user
    # ^' i+ z+ B  W; i. B: Q2 C
  5. & z2 D+ p6 |5 D8 C1 B/ ?* N0 s' n4 l8 l
  6. * Date: 2018/8/15# |* U% h: A/ M) Z) A6 j5 d

  7. 3 @7 c( @: c* q. D
  8. * Time: 23:00; U1 X4 g8 t! h6 t

  9. 1 r5 B9 V# c( J( F
  10. */require_once "./qrcode/phpqrcode.php";/**3 A6 P; P- [( z* ^: U, C9 ?

  11. ) `. k- `& P/ Q) B: l7 i8 k4 G
  12. * 生成电子签名
    2 k+ Z; n5 P6 \% ~6 U" }) m! O

  13. ) t% f5 r0 `( W# M; t2 j. }
  14. * PS;使用微信扫描二维码5 @# n. z7 }0 v# r$ L7 l7 I
  15. . d* V5 z2 ~2 a
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
      o* A( v. P7 ?- b8 f+ S" R% t
  17. 3 |0 N  O) j& O5 D% _7 H! U" ^( p
  18. $content .= 'VERSION:2.1' . "\n";//当前版本% r- J3 U3 w, d& j! s
  19. ' f( s2 A# ~9 E2 h
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ( I) W) r5 A* s

  21. , k: \! m& q% x4 o1 r
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    % ?( f8 q2 |: y) w# Y
  23. . q& L3 `2 h/ u  ]
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位( ?$ C3 P/ L- X, h6 g

  25. 3 R' d% y/ l$ ^0 {: B  _
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ) `* O+ u$ X3 h4 x% n* d5 c9 G
  27. 8 D% D( O! l# f3 H# `4 G
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    , ?% q9 c# o- m# ^# N/ K* G

  29. 9 b4 A5 J: W. Q( x9 O
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)/ R" V$ T8 I8 K9 Y* ?

  31. $ f" ~$ U# T. G8 D! B" f
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话
    ) C# J$ Q1 x3 k+ M& a# n. n9 A

  33. - f/ G: I* j" H9 s1 z7 d
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱
    / A% O/ P% T% q! V7 X* O

  35. ' p" g" z2 a. R. i) Z
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页. Q3 t: `3 ~" O9 a8 ~: Y6 F
  37. 4 H9 D8 x8 h) E) O& l- `/ Z% |
  38. $content .= 'END:VCARD' . "\n";//结束标志- F/ k, G$ {4 t' G

  39. 2 Q* a- N) z3 z( l& r# x
  40. QRcode::png($content);
    + h: y& N8 R+ a. c

  41. # Y5 n8 R( `) w$ C) H

  42. , T- E4 V4 P5 e
复制代码
& }4 [& s/ ]: ~% B! D; V: H7 M
相关文章推荐:
( c( J$ e7 {; M3 l$ W; }: @1.PHP生成微信二维码实例5 e* U. ~: r1 ~) C" l) |4 C
2.php网址转换生成二维码
8 e" Q# w( @: I相关视频推荐:
( X; y. O3 _' ^. \1.独孤九贱(4)_PHP视频教程
2 c9 P$ l, v5 _8 O$ _. S& M& f6 z二、JQUERY生成QR CODE
# c- d) C: }6 p2 P- v" d源码地址:https://github.com/jeromeetienne/jquery-qrcode* B5 |/ @% w3 [8 a* `+ z. P
, y7 v/ \4 o- l5 ]
jquery_create.php
" q* @3 G3 E! P5 @7 W" I: h% v, Z( V. R! E9 Y
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

% x6 O1 s- [6 q8 l5 Q三、PHP识别二维码5 q6 ~( |) I' I6 L" f$ q! g
1、方法一& Z3 K# t$ ~6 @$ g: ^' @2 \
环境需求,安装如下扩展1 ?3 X- K% p: v0 F' M2 Z7 H' }
- ImageMagick
$ U$ x1 k& \0 ~* g- zbar
* g6 ^) J- z/ \* C1 [7 v5 u- php-zbarcode# X$ N/ Z2 ^$ T. t

! U1 o  `0 E  v, `6 Q0 y: m2、方法二1 c) i- B. N8 o5 Q9 E3 v; A1 M
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以& t- r. a8 b6 M9 ]: ~' h
qrReader类:https://github.com/baagee/php_QrReader( f/ y- ]3 e: s% H- [

4 e1 _0 Z2 i8 A9 g  [2 N3 J8 Z7 |

  1. 9 m0 ~8 A6 n$ {, Y* U% e% ?+ q
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径: s+ t/ |: D& u& i8 z

  3. - A5 \  R( n5 @; p9 @* s7 Q
  4. $text = $qrcode->text(); //返回识别后的文本
    9 E+ o; g% R9 z! Y2 ]/ H

  5. 8 p6 w2 k2 N: r# B
  6. echo $text;
    ! K; }/ a: f3 g8 }% I1 x$ x
  7. " \0 n, j1 f, q0 E" t) W$ C4 D7 [7 Z
  8.   ~6 e+ q! c4 F
复制代码
. ?; r5 O1 b% S' A) d* E0 e
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- f# o) I: l# f+ P
; v9 a. q# v& N7 C4 B  W
' C; \8 ^/ Q' a0 E( V, |

" e. i' z) k" }4 j& h+ b% v$ M7 z! E8 Q# ~

5 Q& G$ i, d% c' ]) U/ W: B+ r* _; x
9 J0 p) |' B& y
# M% A$ \# @5 E- O

( G1 L1 ^: ~" T, Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-2 19:48 , Processed in 0.125167 second(s), 22 queries .

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