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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。9 D" `7 d* n6 F! K, t
---------------------------------------------------------------------------------------------------
$ N: l2 L1 ^# T0 E+ V二维码的分类# E3 |7 ]+ p5 u* U3 p2 P9 A9 O! v
线性堆叠式二维码) x/ M7 o! s! E; L

# V* L: Q! m0 \& ?$ ?( |2 v矩阵式二维码( o5 E) i, R# H4 l2 J

/ F3 b- @9 V/ [! Y' y8 P二维码的优缺点
) s" r7 [" Q" S( G) r, v优点
. b5 M6 i4 E- e# t- G$ O* w信息容量大
& ]* r/ H+ p/ f* U% M+ o* ]) z
9 f6 e: ]+ k5 j) [) H编码范围广7 G" M3 j, Q6 m2 T- W- l

9 Z# {+ r4 y9 V; U" f2 N/ l( N9 ~( D容错能力强# A4 T( |9 Z( P

' @3 }1 t3 j2 N9 M  u译码可靠性高
. e! j8 B' u2 Z% @
& d% f7 z& X5 J3 m( D  v3 E可引入加密措施1 `: w  g  \  }! l/ u
2 A. R  p: g# t: A9 g
成本低,易制作
1 n* W- J$ j, _# L- t4 x2 K1 h5 N
0 l" u. o3 A( [, F4 m缺点
& ]0 y8 {6 ?5 t5 o0 r+ L二维码技术成为手机病毒、钓鱼网站传播的新渠道' v( X% V9 V# @: N: ~8 U8 C9 c

7 U, ]8 i3 S- N& ^. m6 e% Z信息泄密
3 ?" t) a- Z. h+ E
& D, M' _0 A3 `3 y  V4 @目前流行的三大国际标准, N% v3 p( G$ K9 K0 i! d
PDF417:不支持中文! J+ j# C& ^/ b7 I
$ ~9 ~4 L4 Q' \4 _- q4 w
DM:专利未公开,需支付专利费用! t/ i! Z; d( P: r4 h* c  X5 D

. }6 q7 i: i" z% e% jQR CODE:专利公开,支持中文
1 K% r9 F* G; c8 w# F# l% s/ x! H# j* v+ V1 M! y/ S+ ]2 d
QR CODE 纠错能力& ?5 @/ @8 e" R/ `
L级:约可纠错7%的数据码字! N0 b5 g9 m) ]+ k" ~
& A6 K* F9 d' b4 `
M级:约可纠错15%的数据码字7 G! v/ `$ ^2 Y
2 z) {9 x2 I5 K# }
Q级:约可纠错25%的数据码字1 i% f$ Y+ [/ i/ y3 A1 D

/ Q  ^# ]& C' o' y6 QH级:约可纠错30%的数据码字
5 z. F; U& `- T+ {' X+ A* S+ {3 ]( \6 t& ]
前提条件9 U2 u& R0 V) ]4 Z6 a" y5 |! O
GD库
1 B" H" B& D& H6 l9 J; ~0 J
$ E2 l" R$ Y5 d, W# o一、PHP生成QR CODE* Y: L: W7 s& N8 G
官网:http://phpqrcode.sourceforge.net/9 Z2 U+ k) x- v" h

" w0 z; a9 K" }0 ?4 v# g下载源码:https://github.com/endroid/qr-code
, i3 G* }/ I" O5 R1 B$ f- L& A3 V6 o2 l
目录结构" l, H2 p2 r- Y7 e/ w% l# C7 V
03130c7c8ed2925e6f0fa9bf23525edb_1573193604581540.png
, H& f6 M1 [) ^7 M- `+ ?. @8 J8 |' }- a) ~6 X1 U0 f2 T
1、qrcode_create.php
0 W; L$ R7 G) Z; q0 ]+ _' rps:生成普通二维码1 x; z. q( F* g) c+ [

  1. " l* t4 S, P- t* z5 ]* ~
  2. include_once "./qrcode/phpqrcode.php";/**$ l6 c3 H& B) b' x# s

  3. * `. T9 V' ]- c5 c; ^
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径0 r) R* V9 l: l  |

  5. ; g) K* w" \. l3 ?+ E& R* Y# u
  6. * 在浏览器上直接生成一个二维码(内容为abc)6 J) G( ~/ }0 ^6 a( u5 n7 E" ]
  7. 0 _3 k7 X5 f  _4 Z
  8. */QRcode::png("abc");9 o2 `0 q2 V; j5 ^# K! {

  9. 9 s" G9 V, C; n% A
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    ( P; Q5 k# h" j* D- b. `9 V" f/ f
  11. 5 R: j5 k% U  O
  12. * 生成文件到本地
    2 X' M: q& n* z2 _( R/ X
  13. # w  x  Q0 l4 Y' s5 Q# t  A* [& n
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
    0 v* A% _/ G! X' {6 r

  15. ' ?! K. [3 i7 }4 u% d/ e! t
  16. * PS:$saveandprint源码的p6参数做了修改
    % J7 f" j- H& C6 `; c1 o

  17. 6 k$ [; |" ^0 v
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);
    / M. |* i+ u/ U  D- x, \
  19. 4 @2 G2 p( w% ?& _* k
  20. # h# v6 q7 K% Q/ @/ l% B/ |
复制代码
, l4 m) h/ L. G4 E+ B% q6 d
2、qrcode_logo.php
& @* \7 {) i' F) Pps:生成带Logo的二维码

  1. * Z' K1 _. [3 G2 Y/ p( Y
  2. /**( b: ~! E- q& u, k) {; j

  3. 8 D% }+ f( `" A
  4. * Created by PhpStorm.7 g3 i- E% \+ d( X8 Y+ M' e/ V

  5. ( @! L9 X$ ^- v, L3 V  N7 ?8 c; E
  6. * User: user
    $ D3 W; y$ z5 X) x* w
  7. 8 z) {# _$ ]/ f' e1 O% z' k; @
  8. * Date: 2018/8/16
    9 c( J% ?3 V4 P* n% M

  9. $ [) w& f& z* x
  10. * Time: 10:43/ ~0 U9 Z6 a  B& m2 }0 l# r
  11. ! m) _* I) c$ r0 D1 R: D: |- c
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    # w0 k- P9 a2 o- Q8 y0 m
  13. # m2 n4 E. \) Y/ z
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称8 `( F7 n7 y9 H9 P3 t7 r
  15. 8 e" Y- z7 [1 H! \8 G/ m
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是! |; m7 ^6 T4 c

  17. 4 S; y9 C& `+ i' s; l" n( |0 \4 W* Z
  18. $margin = 2;//边距' m7 P7 [. B& Q& i2 a6 Z4 b
  19. 7 U$ N' H! S9 Q
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片, x5 \" o/ X4 t( o8 A" @) }' u

  21. 4 `1 M2 {7 r8 \5 J
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    : W& T4 e+ o4 [5 [( o  p
  23. 5 {2 z& D# O2 j+ f( l7 Y3 A" o
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    ! |% r  I* v% h- s- _% @! J
  25. * s; q8 M/ F4 H! K7 Q4 A2 r' k/ c
  26.     $Logo = './pic/logo.png';   
    9 y3 D7 G9 _$ A! j- u+ F
  27. + @2 i* f: ], I! E( E$ p6 {
  28.     $Logo_re = './pic/test_logo.png';   . a3 ?" `: O- j1 E( Z9 ?# n  h
  29. 7 p1 S1 y+ h' U6 G' p
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   - ?( u; X8 ^" m

  31. ' a/ n5 N. ?. X& {" z& ?
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   $ N! H. P$ ^3 f0 R" p
  33. . M, r6 f. V+ J/ L! E( Q. k
  34.     $QR_width = imagesx($QR); //二维码图片宽度
    4 n% v& z- B7 [! t$ x5 V7 C

  35.   @# \/ D3 l7 {8 ], D0 v; W
  36.     $QR_height = imagesy($QR); //二维码图片高度( [" ]' h+ ^! C( w
  37. . |' w2 Z! `# V# K
  38.     $logo_width = imagesx($Logo); //logo图片宽度9 x& `% P. \2 q" Y* A
  39. : t6 _* `5 c; ?  \, l7 ?
  40.     $logo_height = imagesy($Logo); //logo图片高度
    6 b9 i; ?9 o- b* u
  41. % t. w1 f7 n5 M# @9 a/ o; T
  42.     $logo_qr_width = $QR_width / 5;   * Z/ o/ j8 w9 x( M

  43. + E; Q- l. @4 w# U
  44.     $scale = $logo_width / $logo_qr_width;   
    / [7 g2 o5 g0 ~' h
  45. % F8 W5 Y$ o, g" F! l
  46.     $logo_qr_height = $logo_height / $scale;   & t: ^$ d! T& D4 N' f/ a. ^. l1 V

  47. ! w$ U( }  W( X) M6 L( m/ K
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;5 t% y4 Z" Z( A$ X- C4 c
  49. 1 o3 H0 P* M$ S" i- n
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    - f9 B0 N- Z+ H& `4 o. m
  51. ! ~6 h" G/ v/ U! g& M- }
  52.     //输出图片0 [& x* M8 T2 U1 W& h* r/ u/ k

  53.   x5 R0 e: o4 {& G
  54.     imagepng($QR, $Logo_re);
    5 ?* M% Y/ v" z; {9 T

  55. ; x: _8 S2 V4 f' @  L
  56. }
    - C  R" c# `4 n7 k
  57. / d1 y! ?: \, d! _

  58. 9 X, h( `2 @% o4 B5 T+ ?% N
复制代码
3、qrcode_vcard.php (生成电子签名)
2 e9 q0 c% U& e) a! \: f/ h4 Y1 h; Y
vCard格式:https://zh.wikipedia.org/wiki/VCard
; v5 l% g8 X- c9 o4 W; L8 u7 b6 F5 Q7 K) ]2 L1 ]6 P
  1. 8 ^) R, A/ a$ q+ K5 r$ p: R$ y
  2. * Created by PhpStorm.. X0 |/ B8 Z0 w4 o' G
  3. ! k: l+ n; O: t" `0 p! C
  4. * User: user" z) J5 e3 Q( o$ j  Y8 \8 H

  5. 1 ]% }7 t8 M: U' a, b* i
  6. * Date: 2018/8/15/ u  ]3 o1 n! b: U7 a

  7. " k$ W/ @. r" E9 G; p$ k6 }
  8. * Time: 23:00
    + X% P% L3 K" n$ H$ c" ?( v

  9. 4 y/ \; S) Q) U2 P# P
  10. */require_once "./qrcode/phpqrcode.php";/**8 y5 T! T# p9 z3 t5 \

  11. 3 l3 ?( ^* u( G0 O1 j- `
  12. * 生成电子签名, Y6 X- _+ W# }! G) ^: R/ n
  13. 7 t# X8 H. C0 P8 @5 I' m
  14. * PS;使用微信扫描二维码
    8 }: s2 i' P$ K; V: o
  15. $ _7 r. e, p& ~, ~
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    - A) y1 v7 @* J+ D& C! l! R( i

  17. 6 o4 u$ ^' H( `3 T
  18. $content .= 'VERSION:2.1' . "\n";//当前版本" ~' O$ a4 T( x

  19. $ @$ p' k7 T% F  c9 j
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名1 i/ O4 K. z- P

  21. ! N6 {0 g1 c6 V0 t0 R, e
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    - d+ g$ L! t0 k% F4 g- @8 O
  23. 4 N* M8 N2 N- T7 q0 l( ^' Y# H
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位' b' A3 w$ u% M/ Z6 c
  25. + C+ n/ z1 `$ d6 i. `$ t
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    ) ~! @( A$ g9 e' Q

  27. # x4 k7 P8 H+ }$ d4 e
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址! n$ M0 g$ u% b5 w  A) f3 G

  29. # Z: H- ]! y& ^* Q6 A+ B- W
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家); {  @4 N6 t6 o! _9 P
  31. : {) R0 m+ |' ]4 |. }7 u+ r* V
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话9 S0 {9 b! b+ z' R$ N
  33. 7 B. ^$ d; F4 n9 j1 H/ R" c; A" W
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱; |2 Q+ a7 `* q0 n. x  D  B

  35. : L  g7 f/ d  g# c
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页2 Q0 h- \! G8 v+ e, D

  37. $ z& H+ e( w0 {6 {
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ! a: y. r2 |6 x3 G# S$ w. X4 Z

  39. $ a* C- ]- x( R5 z: ^5 K
  40. QRcode::png($content);
    % h1 I% q% l: P

  41. $ R1 Z! `$ R1 g7 v' p
  42. " U$ N3 W! p, J: p/ b' `1 x
复制代码

3 O3 q! u8 `7 o; A" t相关文章推荐:: l5 ^1 r8 o8 F9 I: i
1.PHP生成微信二维码实例' w: X% c8 b. d3 }% I
2.php网址转换生成二维码
) E  A; y- J  X( F相关视频推荐:
9 g$ a* \- m7 t9 B; P& a; w1.独孤九贱(4)_PHP视频教程; U* I3 F2 k2 d) L4 Y" P
二、JQUERY生成QR CODE0 H/ H8 q8 T" b3 s) M& n/ l1 i
源码地址:https://github.com/jeromeetienne/jquery-qrcode
; R- a, }, B. n6 _- b
# |% ^, z6 `% T" f% Pjquery_create.php
0 j  ?) s+ n& i2 Y; ?+ T( y4 k
/ d- c% ^5 \' z* R7 {- S/ C
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

' n5 n. m9 m: I# _0 a三、PHP识别二维码
  n; H8 B3 i9 X) U% n1 ~/ a1、方法一, {9 v2 J) q+ @  L0 a2 c4 ]! o( u
环境需求,安装如下扩展. N5 ^  z1 m. [
- ImageMagick
4 b* ?' o6 v& u& i, I- zbar
1 W% A# s; ?% g+ l5 W- php-zbarcode" z8 h4 h6 h1 _7 j2 y% Q) R
! u' z$ o) B  e
2、方法二
9 {$ t# t3 L+ C: d7 I0 pPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以6 Q' w5 [* E9 Z7 {! }9 x) h& A
qrReader类:https://github.com/baagee/php_QrReader
* _- }9 m  x# [
  D4 O  u+ v  ?9 s9 F

  1. * ~, w4 F( ]& A' E: |' {  i
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径
    ) w' v2 s; c) s6 n+ Y

  3. 7 [8 H7 E2 O) C* `! ^1 Q
  4. $text = $qrcode->text(); //返回识别后的文本
    # o1 x4 i% ]+ [. J) U

  5. % c5 j  Y5 B8 O/ O3 J" z
  6. echo $text;7 v/ \' i7 o7 _3 o! C  E
  7. 7 f( \7 y2 n- [9 G  r

  8. / k/ k' b# L8 J) l, _5 j, A, M$ ~$ W
复制代码
1 k* E: W. m) P; n
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7- I( |2 _( {; E
( w8 p; T2 U/ O- D3 }  E
2 Y% ~  s1 h5 h' a2 t1 f& Q1 @+ ^" ]
* D+ d: t0 }/ M
  |* l  c, f" e2 r

3 U9 r( f+ c6 f) J1 r' ?
# d4 c* x" s* c5 ^5 o! Y/ D
9 q5 j- T$ N: F6 y5 J4 J, I
# t2 O) I% O9 Z4 w  Y  W3 h
% V4 x  C7 B( b, j$ r) {

最新评论

GMT+8, 2023-2-1 17:48 , Processed in 0.122103 second(s), 25 queries .

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