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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

cncml手绘网 门户 查看主题

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

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

本篇文章给大家带来的内容是关于PHP如何实现二维码的生成以及识别(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
$ U* J% A7 \/ c. d' X" N$ l---------------------------------------------------------------------------------------------------
4 d: m) j, Q' O% d& S二维码的分类
* `/ V& O+ u, B  C6 M7 G! h$ {线性堆叠式二维码" L$ t/ s5 Z7 S9 L
; N! B+ `8 w/ C$ E6 s
矩阵式二维码
. L1 Y; ~* P2 D' H+ L& r3 ~- i/ r
' l' z5 ]8 g4 V, W# I二维码的优缺点
; e0 ?: y( }' e% q4 q6 E, R! P优点
$ O; V$ s3 C; k" s信息容量大8 O! X1 z7 \3 m. k: D
! _! y! A9 y9 e
编码范围广$ T: A2 L5 c( a$ I# O

; u3 L( E" m: O; Q4 t) A2 I0 D容错能力强
* U+ A$ R( @" J# D1 m: ]1 m6 ^( r7 e/ N
译码可靠性高  ?2 w- k' V. a: @
4 T* F. G! H4 y) l+ o% U
可引入加密措施, k; b1 P# B1 p1 C3 P' k" r( l
5 t9 q: V1 x) t) X1 n
成本低,易制作# W* J  H% f9 M$ I8 i) o/ G

3 L) p' r  [8 S" ^3 _缺点7 p& k0 b7 s, S3 @1 @- B
二维码技术成为手机病毒、钓鱼网站传播的新渠道3 E, D9 Z& i( a0 [$ t1 ~

' t9 E! h, p! i9 r! Z) j( x6 g; n信息泄密
3 k% _* |7 E9 ?' D/ p" l" O
/ E9 }" h1 p4 s目前流行的三大国际标准
' J: b* p& R7 g  h8 }PDF417:不支持中文' ~1 {5 f8 {$ d+ h8 _) b) F
  x8 |( m" x0 H& S( K) E
DM:专利未公开,需支付专利费用
& b; m: W1 U5 O9 W5 A8 q1 E8 h' y4 a7 ]& x$ h
QR CODE:专利公开,支持中文
3 P/ ^) _0 |) |
4 U- _8 T: L% w8 a% `QR CODE 纠错能力& L' k4 B' t# A. W( e0 P+ g
L级:约可纠错7%的数据码字
  l8 p/ _+ n9 ^3 a8 @& ]
1 n  {; A1 u" w9 q+ DM级:约可纠错15%的数据码字/ D; `5 e% G" d0 b( u$ e6 r2 K/ t- f

8 V* H* n- C5 ~1 h6 qQ级:约可纠错25%的数据码字
$ x8 K" v3 k- |" N9 T; E
* y! ^% ~) [4 I# m2 k. I+ H' l: I4 gH级:约可纠错30%的数据码字
  R! S6 T; ?9 o, C+ M3 ]3 t  e8 \4 X  [" _
前提条件
# l' d; I/ ?3 YGD库
3 K/ a6 o! Z( t# g7 ]. w' b! G( D* g, e4 F7 N
一、PHP生成QR CODE
5 C: P4 }% v# Z+ d0 n+ k; Z) m6 [官网:http://phpqrcode.sourceforge.net/
, l/ Y' L/ I/ k* |: m4 _  G+ B6 o  g  g& J
下载源码:https://github.com/endroid/qr-code
! [3 b2 E( x4 X0 K' ]/ F' x0 C
: S) O- p+ V" F3 e2 A" P目录结构
8 k8 i7 t) J- J/ o$ H' B+ ~/ I7 Z. c: m 6 X9 y1 I' @: _9 [

9 a% h+ Z  x3 c$ Q0 W1、qrcode_create.php
( p# Z, ^* [6 o4 g2 ?ps:生成普通二维码6 R. r& y/ H: J9 Y; N) G4 G& h

  1. 5 ^8 g$ P! l' @% I' W- @0 R5 }
  2. include_once "./qrcode/phpqrcode.php";/**
    5 M! ^. c" J) [

  3. . ]! o" q4 u% b4 d$ o
  4. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
    7 Q8 B# s% E8 l5 k; _; ^& K

  5. % Z  T# r5 I. G0 @. W1 J4 q, j
  6. * 在浏览器上直接生成一个二维码(内容为abc)
    8 @1 {  D" [3 j& Y
  7. ; _7 ~8 L1 m6 W3 i/ a. H, q  n- \
  8. */QRcode::png("abc");
    9 ]9 v. K+ E% \( y( N  h8 f0 t  L

  9. / `9 w4 u( N+ F  J
  10. QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);/**" [1 C" g/ R& g/ `/ n6 m
  11. ) P: K; H5 X: Z1 R6 L! U- P
  12. * 生成文件到本地: k( H0 p+ |- a8 f" E# W% B
  13. : w1 l! z( u& \3 p2 H% @
  14. * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)4 S- x2 |# E+ N. |: x5 `
  15. " n3 v, v7 F# S  f" ?
  16. * PS:$saveandprint源码的p6参数做了修改
    % t$ L- h& v/ Z

  17. : v4 z9 H- X5 |; W, B2 S: @. G" Z1 ~
  18. */QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);4 l. |/ z2 Q$ _+ v: f

  19. - i- A5 `  C2 a
  20. 2 ~: J  a# G4 W+ F6 C0 d
复制代码

3 d3 o- l: e( |8 x  e9 F2 {& T2、qrcode_logo.php3 U5 i8 _  U; |$ N# I" N
ps:生成带Logo的二维码

  1. ; @" x1 \1 K; @* Q
  2. /**# Q; A- l# y, f% n" s
  3. ' m5 {. |. {. u% C, X, O1 q
  4. * Created by PhpStorm.+ L# ?- ?! f$ Z" D6 i
  5. - C2 |# }# t- b. s
  6. * User: user3 N3 }0 c4 P  n0 }2 B

  7. - Z4 k2 J: h0 |3 T
  8. * Date: 2018/8/16
    ( ~  a- X7 m6 H. d5 `5 k) H% K$ ]

  9.   U7 S( N$ Y5 K" y) j/ Y' |, G
  10. * Time: 10:43
    ; `6 M3 E6 ?4 S5 r$ \7 O2 A8 j+ g; `

  11. ' P- n$ v: ?* p. ?0 E3 f/ U
  12. */include "./qrcode/phpqrcode.php";$txt = "测试内容";: T) K8 t- N5 V. r

  13. & F5 d! f. [' j  p4 J4 q
  14. $picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
    $ Y% ~. j# H+ s
  15. - Y0 s; k+ b  Y' h
  16. $level = 'L';$size = 5;$is_logo = 1;//是否包含Logo 0否 1是
    0 E3 k3 y6 ]% H& V3 l: J
  17. 3 C0 R3 h+ e1 c* u2 p: R5 P
  18. $margin = 2;//边距  m2 n( R* S* b9 r
  19. ) i4 w* z- i# a; f. T0 t8 i
  20. $saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true//生成二维码图片
    . D  u3 `) f# `% u5 a( Y
  21. , R) R: V2 `* s( I; q) e/ O
  22. QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);if($is_logo == 1){     t0 [6 F( r* @; O/ V5 g( K% x

  23. $ j  I. a: U; ^8 ^* J4 @' l
  24. $QR = $picPathAndName; //已经生成的原始二维码图
    . @8 l. o' k) v/ n$ k

  25. 1 t: l% M8 X9 i/ S$ Z4 _7 E1 \
  26.     $Logo = './pic/logo.png';   7 J& t8 s9 F& b$ L5 L" J

  27. , e) X0 B; W9 Z+ x8 u4 P
  28.     $Logo_re = './pic/test_logo.png';     ~: K: c) _' L3 H. y
  29. ' O: }- H( E; h3 @( G7 r7 L
  30.     $QR = imagecreatefromstring(file_get_contents($QR));   
    8 q9 g" A$ E5 @3 h; A) A% G. d

  31. " n8 H0 x2 }4 U# D' n2 ]" R$ ~
  32.     $Logo = imagecreatefromstring(file_get_contents($Logo));     }% k! y+ C. B/ u# E. E$ Y9 \4 k
  33. # h" D+ t" l# x+ ]2 B4 G. {5 [
  34.     $QR_width = imagesx($QR); //二维码图片宽度4 I% i- f: \# [0 ]. [

  35. 3 i# h& S! n6 \; B. p! _$ [
  36.     $QR_height = imagesy($QR); //二维码图片高度: V: O+ W' e: T5 A! Q$ C/ t
  37. 9 {, c6 F; |2 K. b
  38.     $logo_width = imagesx($Logo); //logo图片宽度/ s8 ~' |; l/ `5 w  d

  39. & |! s, O7 g3 E; l; a
  40.     $logo_height = imagesy($Logo); //logo图片高度! g+ Q/ z2 Q1 _5 V
  41. ' G7 F3 v" x) F  ]
  42.     $logo_qr_width = $QR_width / 5;   
    4 Y8 W  Y) n4 Z! h/ s

  43. ! A" J0 \4 a( y1 I1 N, G* Y
  44.     $scale = $logo_width / $logo_qr_width;   . c7 m) s  @7 C, n0 Q
  45. ' v5 r# P% u/ ?4 L
  46.     $logo_qr_height = $logo_height / $scale;   ! V# A# M2 d6 J0 ~" i5 k  ^
  47. + \! h( b; p. n
  48.     $from_width = ($QR_width - $logo_qr_width) / 2;
    ( j4 [7 \! d* d' w; K0 W
  49. " d/ U, F# P9 A
  50.     imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);   
    ! P8 h. B- t+ i) v: O, H. L
  51. 3 S7 }7 h  H4 N3 s) V1 ]
  52.     //输出图片
    # v* ]: y6 X  k$ E
  53.   k: L, ~! I3 _# L7 V- `
  54.     imagepng($QR, $Logo_re);
    ( g: u2 o7 \4 v$ m/ C+ p
  55. 3 [5 ^( G. _' j( e7 r3 s
  56. }
    # j( y/ z3 q. C. I- S" Y3 a

  57. * x& I$ T4 `+ q) p: T' `

  58. ) _4 M  ?6 f, g" V0 Y( w
复制代码
3、qrcode_vcard.php (生成电子签名)( \* w$ k$ |* I3 d. R2 \) R% }

; g8 Q9 a/ V2 ?1 S/ c# D" pvCard格式:https://zh.wikipedia.org/wiki/VCard
$ B; m4 Z/ V+ @( z2 V# U& e: ^. [9 B& q. `& I5 T  r
  1. 1 {) I4 H& l8 l  e7 L( |. ^
  2. * Created by PhpStorm.1 \) H* B- N" }6 j. V! ]

  3. . D; X# w4 ]: {
  4. * User: user5 _1 n9 o/ X; x" J$ F5 s
  5. $ D' J& b# W( t* G$ N6 U
  6. * Date: 2018/8/15
    $ _0 _+ @6 G7 n; i
  7. 5 `/ n8 X( A3 v/ {9 j6 I$ R
  8. * Time: 23:00" ^' G" j! x+ U( ], \

  9. # J2 C+ d7 C: `& t  N6 D/ m  _
  10. */require_once "./qrcode/phpqrcode.php";/**. g2 g* C9 J3 J+ X
  11. 6 m; y7 N7 t% R- Z; `
  12. * 生成电子签名* L* @1 A3 f  A4 G
  13. 7 e6 o: K4 V* Q+ C" E( ]
  14. * PS;使用微信扫描二维码
    % O$ ~  b, V9 O( X4 G
  15. " _& i4 ^3 o, G7 \
  16. */$content = 'BEGIN:VCARD' . "\n";//起始标志
    " |% U7 j5 G) R6 }

  17. 3 m! @3 b3 M3 j7 L4 I
  18. $content .= 'VERSION:2.1' . "\n";//当前版本0 _0 u3 M: p, H" a
  19. - p" L7 n$ o( o2 B2 O3 |% i( I
  20. $content .= 'N:周' . "\n";//姓$content .= 'FN:勇' . "\n";//名
    ( C, m5 P2 @# y$ X" q. ~

  21. & l6 Q* I7 W' H8 ]
  22. $content .= 'ORG:江苏东大集成电路系统有限公司' . "\n";//公司名称% M- R2 }" k' R  h( ^. D" b$ _" m
  23. ' _6 K! {) S& \4 Q" k. ]
  24. $content .= 'TITLE:PHP研发程序员' . "\n";//职位0 W$ w6 n+ z5 y/ Q# Q2 }
  25. ; U- x0 a- G: U0 W4 a1 T  n
  26. $content .= 'TEL;WORK;VOICE:0523-83623173' . "\n";//工作电话
    . U3 x. C5 `( Z

  27. ! h! _  @  L4 Y' G
  28. $content .= 'ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国' . "\n";//工作地址
    ! N# I) E% T: f/ |

  29. $ v3 V2 R7 v# J& \& I# V
  30. $content .= 'ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国' . "\n";//家庭地址(街道,地级市,省,邮编,国家)
    ; o. h7 `8 {; ~3 B. u

  31. % E4 J' O( R) o
  32. $content .= 'TEL;TYPE:18000001111' . "\n";//移动电话) O% J, h/ H. k+ h$ v
  33. 6 J' D; t0 {  Z# ^! [0 y
  34. $content .= 'EMAIL:123456@qq.com' . "\n";//邮箱+ @$ }4 A9 }7 V- G/ U2 {- ^

  35. 2 N8 D) H  Z+ d# |7 B, \; w) W. B8 B
  36. $content .= 'URL:www.baidu.com' . "\n";//个人主页
    % T9 n  [; i8 d' \5 b% p3 p# b0 `
  37. 0 p: N( A% |/ i$ X9 w
  38. $content .= 'END:VCARD' . "\n";//结束标志0 _' c6 R8 M- Y" g, \

  39. / U) S; {/ @9 R$ A
  40. QRcode::png($content);  R* \% `: J2 H  U( D

  41. 6 o. u. I6 O: r( f

  42. 9 _5 C* X8 J4 d- ?6 X
复制代码

* H, D+ O4 d, W8 y1 }1 W: j相关文章推荐:$ |" s3 U6 ]' d: U1 w
1.PHP生成微信二维码实例0 k+ s) w) h" z6 H! Q+ q4 F! O( b1 X
2.php网址转换生成二维码( a3 q. ]2 G" L, Y% s
相关视频推荐:. R/ \4 ?2 O8 X' W2 N* i# b+ V/ P
1.独孤九贱(4)_PHP视频教程
4 ^& n+ z9 c; J+ o3 ]二、JQUERY生成QR CODE
1 E- V4 w- r8 c+ S! D源码地址:https://github.com/jeromeetienne/jquery-qrcode
+ u  `! u6 z2 T$ ^/ [
- h' ^2 G0 j6 |# D# j( [jquery_create.php2 d& q& X; R/ B* z# _& k$ X

+ n* K+ f1 I. M' Q  z. e
  1. <blockquote><font color="#000000" face="Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif"><!DOCTYPE html><html lang="en"><head></font>
复制代码
! W( s' ?5 J. j
三、PHP识别二维码
$ C; |0 U- U) s3 u# _1、方法一
: R$ U. W+ s" C4 ?' A; N5 i环境需求,安装如下扩展: Y' H, A/ I5 E+ [2 k0 F3 S4 Z4 R
- ImageMagick/ r. C! P. _( j4 H' W' S) X) a
- zbar
: I# G+ p  g3 _( f- L6 d1 R- php-zbarcode# Y9 s0 B; i7 O1 D% w& J5 ]
* t) M; Y6 Y8 [$ X% u+ U$ Z3 c
2、方法二
3 ^/ A. v, ^# c1 L* V/ M6 UPHP识别二维码(无需安装扩展),初步测试普通二维码可以,带Logo的二维码,容错级别需要设置高一点页可以
+ t) p! U0 S. f+ S3 Q7 uqrReader类:https://github.com/baagee/php_QrReader
7 o, K9 q% q0 e4 P, E4 d
6 i6 ]# R6 e8 K* m0 A6 z/ T& K+ `
  1. ; P3 ?* k1 _( E2 u
  2. $qrcode = new QrReader('./test_logo.png');  //图片路径$ ]8 R* }$ r' T7 q: E- U( W  U
  3. 7 M  ]; \" \" D
  4. $text = $qrcode->text(); //返回识别后的文本* O8 B- t9 {) ?0 F$ p

  5. % |; @: G7 ?2 N1 \8 `) M
  6. echo $text;8 Y" n3 W+ i9 G1 L9 i6 x7 `4 X; v
  7. 8 |; ^- j) L& p- A- o6 W- @: ]6 b1 O

  8. 2 Z2 u7 _+ E; }) A
复制代码
" D( V- Q% q4 x0 o( k2 W1 X& e5 z3 J) E
链接:https://pan.baidu.com/s/1icpWRjIQiXdCXeOc52pNSg 密码:c5y7' h- [8 H7 K' M
% S6 w$ v5 v* v
+ [2 S# @" E+ B; M& M! {: [
; _; d. X1 a0 W$ ]: c0 _

4 A' Y2 `9 V; S" g' O& P1 g3 W3 u7 J" m* `/ c6 G: h
9 J% ~' S  Y, b7 Y; B8 P+ x9 r
7 c1 U+ q8 L, O' G4 a1 ~

& d* q% x$ z9 b
4 J* P2 d+ _' A. _7 Q3 o4 }& N

最新评论

GMT+8, 2026-9-20 23:07 , Processed in 0.069966 second(s), 24 queries .

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