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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。8 ]% H7 P' r+ F$ M7 g* A; _
---------------------------------------------------------------------------------------------------
; x7 R, R! k3 Z& M# o- i6 Q二维码的分类
( O9 O8 z4 G1 a% X( x/ l线性堆叠式二维码0 t9 M+ T& A0 o6 @+ R8 y( t; \

" d; Q2 a3 ^5 B' A. b7 v矩阵式二维码
# {1 V& h4 G" G: h  m0 ~
/ R/ T8 b. p" k  Z  x! L: X% T二维码的优缺点
7 ^0 S: h  J3 L$ p% q优点5 n& s; ^* w1 G- ]
信息容量大7 A' i+ ?1 I3 ?( {9 h8 x% \
* ^! K: o+ F5 n4 e6 o9 S, \
编码范围广* A5 F6 ~* r- e' _
+ k! `6 D" x2 ?, G3 u  x# N
容错能力强
  p1 s1 \. g3 }" i9 W3 K! q* t0 K7 c8 d
译码可靠性高
- I( ?) E: X' e# r/ m2 ^) X1 y. C$ G/ ]$ p) u$ B
可引入加密措施& L: }4 t) N/ K2 H

$ n5 v$ M" c- d成本低,易制作
8 E8 ^% j& w) w/ ~: E4 G# c2 l* l/ a: N" {1 n) b
缺点! u9 a- Q  m( J3 E- a) P8 C
二维码技术成为手机病毒、钓鱼网站传播的新渠道# ?" A6 _7 H  d% V( w9 e

0 w6 F0 |. O+ K; s; L- J4 K信息泄密9 O9 ?& V( r$ b' M

0 y- P  S/ D- ^, p1 b5 Q* ]目前流行的三大国际标准; I7 j: ]+ _" Z5 l, M
PDF417:不支持中文# {- Y# z( K+ Y' k( d4 b0 D

1 n: ~! I6 j7 v& h9 [7 iDM:专利未公开,需支付专利费用3 _  t8 {, m5 G* o. Q2 \

. K7 J8 s+ a+ G  A) [% w+ JQR CODE:专利公开,支持中文
( Y2 M3 }4 s" s6 G, [# U( G7 U7 c0 s
QR CODE 纠错能力6 y* _3 H% J3 n" P; b
L级:约可纠错7%的数据码字/ n$ j4 F* w% D  y# {  {
& i" h( U0 i) X: b
M级:约可纠错15%的数据码字/ a0 w) t. f, ^0 m# E! Q
! L0 ]4 b( K' y+ X0 h; _# A; I% E
Q级:约可纠错25%的数据码字
9 E3 o3 Q6 }5 T1 i: H* |8 O9 H( ~* R5 Z' o, k0 G
H级:约可纠错30%的数据码字' T! ?+ Z. j. H( P+ f; k- }
, L% [+ `  O+ {( o
前提条件
2 ^. \( N+ o, O( i" zGD库
; h' u+ C7 W; }/ [$ w# i
- R1 u, |. J6 H' P/ r一、PHP生成QR CODE
- l) S" }' |& g0 T) J4 C2 t官网:http://phpqrcode.sourceforge.net/, b* m( i9 [( O& O9 `4 F* r
! \6 t3 k! l6 Y* R( c& Q7 {0 q) R* p
下载源码:https://github.com/endroid/qr-code
% l  r, ^5 Z1 r
, \2 X7 E3 ]+ D5 z目录结构
9 c$ b. E$ E- U% C   H  [; `/ c' y" p, t% h; x

5 d  ]& T* v2 p9 R1、qrcode_create.php
# {* m  ?: t. b1 t2 l* cps:生成普通二维码4 G9 r* w* E! d4 s: p0 f& ?
  1. & D+ q3 ?' F' `4 ]5 }
  2. include_once "./qrcode/phpqrcode.php";/**
    $ X3 n2 d/ e9 b

  3. % h$ h/ m- L6 |6 h
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径( O$ u6 v% H. D3 L7 N
  5. * f1 R- t2 A0 Z$ A
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    3 Q+ \, i; F5 n7 X
  7. 6 F8 z; I2 y2 w8 c7 C
  8. */QRcode::png("abc");
    ! p) a; a3 V2 s' o( O" F

  9. - z$ F$ {1 R8 l5 M+ A/ D4 x
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**
    7 R5 m+ Z1 C4 q: k7 [* _3 t

  11. 3 G0 L0 d) }- \6 R8 |( F9 V0 B8 i
  12. * 生成文件到本地
    1 ]% ]" f0 c1 L) V# P& Z
  13.   ?: F( r: k) }' Q  G
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)( [1 B9 w5 f& s4 R) j7 i
  15. " ?8 E5 b7 @# l& K+ y
  16. * PS:$saveandprint源码的p6参数做了修改
    - M2 |+ L. j+ [+ A% J
  17. , M7 x! U" u/ k+ k) M8 E
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);* g1 l6 N: w2 v' o! y
  19. . J( l+ I  }4 `/ w3 @; G
  20. ' u. E, w% S! s" n& H' S) t) \
复制代码
0 J1 g! U' s9 i0 o3 ]" Q# a
2、qrcode_logo.php
9 {# K+ X+ b5 d9 x. Rps:生成带Logo的二维码
  1. ! s4 P7 z# c+ h! k! v4 m9 ]
  2. /**
    1 o6 a3 n# @# ]
  3. 5 ]. p7 `6 n& O0 H/ ]9 l1 Y
  4. * Created by PhpStorm.
    / v! D: o, E, V1 y" @" r* ~; a& ~
  5. 1 L# N! }$ E- l$ n; `
  6. * User: user
    4 e) N3 {' f7 N! r( y
  7. ; x4 l8 z/ R: f7 m7 @
  8. * Date: 2018/8/16  c. O* a& G& t; k% t0 j/ T
  9. ( i7 [% x0 `9 J
  10. * Time: 10:43% _2 Z. K. S$ r  j' a

  11. 4 _7 l+ {4 T% }1 |6 h% J- t
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";
    " x+ S' ]5 ^  q- _3 z, [$ ~

  13. , h' g) X) [% k8 V  T  l+ D
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称$ ^+ x( A+ a" ~& F3 L$ t: L0 r
  15. 5 @. x- n* E0 o4 e5 f% {3 _1 Q
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    . r: Q* G& K4 W, E/ O6 Q. }3 k/ s

  17. ; u: W+ I2 B- h
  18. $margin = 2;//边距
    $ }; W6 I) _' [6 K' x
  19. $ f* `+ f# n0 l' S" v
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片/ g1 N8 t0 k$ }+ R
  21. 5 G: c9 b. l0 V  ^( `( W1 j+ ?+ Y
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){   
    ) A, r  {  X  v7 _* k% Z
  23. + Z* \3 ?9 K  l8 h2 e( t, b* A$ G4 y
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    9 G# R" F5 y) ?
  25. 9 B! w$ ?4 F  u8 s
  26.     $Logo = './pic/logo.png';   8 w7 L2 z& g; ?# @  D" R

  27. ) O: K4 a4 g* X( ?) z; S% i
  28.     $Logo_re = './pic/test_logo.png';   ; d# Y" L6 `5 j5 t1 ]  T

  29. 0 ?4 o# k! E1 U  i
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    * a: f. }) @$ W2 m( V& B( e, d
  31. ' b' h4 R7 j8 j1 Q/ s
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));   & w8 v* N4 P( ?' p1 A" A( v/ c
  33. 8 O% ]6 h2 e: s/ \
  34.     $QR_width = imagesx($QR); //二维码图片宽度0 M9 w+ i1 D; o1 U; z% S+ u
  35. 6 `! k1 f9 f' m+ p
  36.     $QR_height = imagesy($QR); //二维码图片高度
    / y7 Q- V4 r2 e6 \  p
  37. / M/ X9 U2 g9 H, q) }  I0 m
  38.     $logo_width = imagesx($Logo); //logo图片宽度
    # _' G$ d% O/ E. ^) i& f

  39. % a4 C( \+ k! i9 ]3 |
  40.     $logo_height = imagesy($Logo); //logo图片高度
    2 E. |$ p) `/ [- l
  41. 4 v8 B4 v( {5 H: j
  42.     $logo_qr_width = $QR_width / 5;   
    7 E, Z5 N0 q* O1 Z; ^. ?+ @6 M& G
  43. ) ~/ D4 [7 g; r, ~  g' h) C
  44.     $scale = $logo_width / $logo_qr_width;   
    % s1 A& C$ ?* m. R! n

  45. ( D- v6 o0 s1 W2 ~) x
  46.     $logo_qr_height = $logo_height / $scale;   5 {: a3 l4 ^1 j
  47. 2 W; F* u3 c2 x* m3 C# w. _% k# Y  M
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;$ E( Q0 l5 P; P6 }% U7 {% P, H' Z
  49. ' Z. u* L- v; l8 c
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   # u8 Q+ [0 j: o: v3 ~% P* ?

  51. * B8 M/ N1 @) j3 h& f8 S) z, O
  52.     //输出图片+ h( F) v8 G6 c5 w! u& b# z
  53. 6 B0 }7 ]- a' D: L3 W' ^3 L
  54.     imagepng($QR, $Logo_re);
    6 E( m/ z. Q* B. K6 S+ O; [
  55. ! Q. a( E' z3 K% A+ [: m. ?) ?
  56. }
    " W9 v  i% ?" c' E( k6 o

  57. 5 ?0 F2 ~' z2 |, l# H  C0 q
  58. & y% N7 ~: C$ M9 t5 B9 ~; N: A. Z. e
复制代码
3、qrcode_vcard.php (生成电子签名)5 p* x3 b9 E+ m+ E$ c3 B& s

0 k4 @# F- _' _vCard格式:https://zh.wikipedia.org/wiki/VCard  S+ z; ]8 ^0 `
) ?; A3 `4 o. M2 L# x
  1. 8 u* U0 e6 b3 Z7 k4 h) W+ X$ q
  2. * Created by PhpStorm.
    * A3 ^* Q: v- [, n. k" ^

  3. 3 N9 V0 d( z- Q4 ]3 r7 I( }! W
  4. * User: user
    7 G8 |* j& l: C

  5. 1 h# Y2 ]5 \' u" p
  6. * Date: 2018/8/15
    : I! S! j  {8 v4 R4 Z" q+ U

  7. ; ?8 M8 q  a3 R% s3 w4 e! Z
  8. * Time: 23:00
    + A) E1 @. j! i# _
  9. : I, o2 @  L1 p9 t7 M# x0 d
  10. */require_once "./qrcode/phpqrcode.php";/**. \( P) y! v# l
  11. " A8 y" _3 @! K! D# U( |6 A) s* Y
  12. * 生成电子签名8 d+ R$ i# B/ {7 ~0 c7 I7 B& ?
  13. 8 I* \" E( ~5 u0 u
  14. * PS;使用微信扫描二维码
    , I- U" M; s, v5 E$ i/ a$ O6 j  w! w- }

  15. % |: l, j. ^: V5 b
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    - _9 b$ n# X  Z
  17. * t/ C' v& `$ P. m# x' ~
  18. $content .= 'VERSION:2.1' . "\n";//当前版本
    ' [1 U2 w* a! |$ i6 n  ^/ i
  19. 4 {- X5 y+ z6 u. ~$ C
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名: q$ u) I' U. _
  21. ; O" D' @7 E5 z+ T8 j: D, \- @
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称
    ( L1 W- N* t  O7 }& z1 ?
  23. / A9 s8 k# u& o; n$ X
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位+ ~# F! N, _; X# g- `! R
  25. ) k9 Z5 c! N4 r
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    / j# h. }- _  ^  m* C
  27. ; @8 \/ x4 R' O  Y* z% i1 I
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址: K! `' `' N; q0 D- @

  29. * e; @1 X6 Q  i. v/ j7 i8 y4 r3 Q4 L
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)8 T$ b8 o  K/ k9 |6 o
  31. 2 b# b) \- E1 R4 ~
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话7 N6 L" \/ \* M7 d8 Q

  33. , Q! P1 a% X7 H- p9 F8 R: r
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱. F+ y4 {: S% g. q9 v
  35. ) N% P4 h) i' m- @  \) l
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页: C" \4 C/ X, _$ i# Z( I" [' [8 A

  37. ! J* M5 |$ X3 b! j8 t3 R9 C" y. c$ Z7 e
  38. $content .= 'END:VCARD' . "\n";//结束标志
    ; i1 W4 C) f7 n1 }
  39. 9 H* o% W; y  m) B1 h
  40. QRcode::png($content);
    ) Q; i, i7 T4 r! ^- [& U
  41. 8 W! x  f1 {& E# ]+ F7 M: b" @" _
  42. ' g5 G2 F+ X- z# X( l
复制代码
3 D+ ?" j& f: d& }
相关文章推荐:, y5 o0 h1 V0 y1 I. ?! {
1.PHP生成微信二维码实例  \2 I& e8 Q2 ]: w) |
2.php网址转换生成二维码
% T0 J4 m. Z; p- n3 R相关视频推荐:* s& y' L; I! U& v) U
1.独孤九贱(4)_PHP视频教程
9 N. B& ^, `, `  _+ c0 Q/ m+ E8 e二、JQUERY生成QR CODE
9 ~1 j" w- X$ C- o* `  l源码地址:https://github.com/jeromeetienne/jquery-qrcode
( |, y2 W. m  S# e5 Q
- V* W3 E( T3 ^jquery_create.php$ W: @; U9 T: V0 Y) ?% q9 _( v

8 F0 }. G) Z# s7 d( h
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码

2 d% I# _0 |  {/ H三、PHP识别二维码5 Z6 X& b' _' T4 \5 v1 R; v; i
1、方法一1 z" r+ `4 B/ J+ P5 u- ~3 n9 {
环境需求,安装如下扩展0 n6 n' E" Q' @- K5 j# q
- ImageMagick+ I1 q7 }. y' R. A) k/ J
- zbar
% L1 t7 n- X- c7 ?1 r% S! B0 M- php-zbarcode0 f6 k& ^4 }3 \- ]+ T: d
8 {, S, R; o* c4 `7 A
2、方法二) k/ j4 |6 j  Z
PHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以3 k$ T  s3 f& X2 W8 F& m" }6 x" q0 M; T
qrReader类:https://github.com/baagee/php_QrReader( k# Q& H' L6 f7 B2 `; L8 ]+ `

3 C# M8 E- B% H3 V/ b' O" Z

  1. / I0 c* Y1 U* B1 O& q
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径& B' y9 i3 \9 x( d! |0 I
  3. ; w7 k0 d* M: z" i' N
  4. $text = $qrcode->text(); //返回识别后的文本+ I3 a: a0 x# K2 a8 X

  5. 5 J' [) a4 i! f* U
  6. echo $text;) z  `$ J' s) [# g& \
  7. ( e5 e- g' I  E% \! h/ S

  8. % Z( X: ~, a, F* a
复制代码

. L6 x' g6 [8 |: }链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7" \: K% V6 L% B! b
1 j  H# y% u& \6 z8 T  z

$ D# H2 |2 t3 X, b; g; r6 b
1 `( R/ w$ w1 z1 r( A- Y  L* ~- J
# L! ~: }5 r# W# d, {4 x
- A! H9 f0 h" }" s8 L  i' ^: l8 l6 U3 [& j0 V
- m* Z5 ^) e& {4 @0 U$ @. }3 y
9 ^! {7 |2 T2 K/ }8 E1 r' \

1 y1 D2 z6 C. \7 D' O

最新评论

GMT+8, 2026-1-30 11:37 , Processed in 0.052361 second(s), 22 queries .

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