<?php
define('QR_CACHEABLE', false); define('QR_CACHE_DIR', false); define('QR_LOG_DIR', false); define('QR_FIND_BEST_MASK', false); define('QR_FIND_FROM_RANDOM', 2); define('QR_DEFAULT_MASK', 2); define('QR_PNG_MAXIMUM_SIZE', 1024); define('QR_MODE_NUL', -1); define('QR_MODE_NUM', 0); define('QR_MODE_AN', 1); define('QR_MODE_8', 2); define('QR_MODE_KANJI', 3); define('QR_MODE_STRUCTURE', 4); define('QR_ECLEVEL_L', 0); define('QR_ECLEVEL_M', 1); define('QR_ECLEVEL_Q', 2); define('QR_ECLEVEL_H', 3); define('QR_FORMAT_TEXT', 0); define('QR_FORMAT_PNG', 1); class qrstr { public static function set(&$srctab, $x, $y, $repl, $replLen = false) { $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); } } class QRtools { public static function binarize($frame) { $len = count($frame); foreach ($frame as &$frameLine) { for($i=0; $i<$len; $i++) { $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; } } return $frame; } public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037') { $barcode_array = array(); if (!is_array($mode)) $mode = explode(',', $mode); $eccLevel = 'L'; if (count($mode) > 1) { $eccLevel = $mode[1]; } $qrTab = QRcode::text($code, false, $eccLevel); $size = count($qrTab); $barcode_array['num_rows'] = $size; $barcode_array['num_cols'] = $size; $barcode_array['bcode'] = array(); foreach ($qrTab as $line) { $arrAdd = array(); foreach(str_split($line) as $char) $arrAdd[] = ($char=='1')?1:0; $barcode_array['bcode'][] = $arrAdd; } return $barcode_array; } public static function clearCache() { self::$frames = array(); } public static function buildCache() { QRtools::markTime('before_build_cache'); $mask = new QRmask(); for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) { $frame = QRspec::newFrame($a); if (QR_IMAGE) { $fileName = QR_CACHE_DIR.'frame_'.$a.'.png'; QRimage::png(self::binarize($frame), $fileName, 1, 0); } $width = count($frame); $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); for ($maskNo=0; $maskNo<8; $maskNo++) $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); } QRtools::markTime('after_build_cache'); } public static function log($outfile, $err) { if (QR_LOG_DIR !== false) { if ($err != '') { if ($outfile !== false) { file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); } else { file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); } } } } public static function dumpMask($frame) { $width = count($frame); for($y=0;$y<$width;$y++) { for($x=0;$x<$width;$x++) { echo ord($frame[$y][$x]).','; } } } public static function markTime($markerId) { list($usec, $sec) = explode(" ", microtime()); $time = ((float)$usec + (float)$sec); if (!isset($GLOBALS['qr_time_bench'])) $GLOBALS['qr_time_bench'] = array(); $GLOBALS['qr_time_bench'][$markerId] = $time; } public static function timeBenchmark() { self::markTime('finish'); $lastTime = 0; $startTime = 0; $p = 0; echo '<table cellpadding="3" cellspacing="1">
<thead><tr style="border-bottom:1px solid silver"><td colspan="2" style="text-align:center">BENCHMARK</td></tr></thead>
<tbody>'; foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) { if ($p > 0) { echo '<tr><th style="text-align:right">till '.$markerId.': </th><td>'.number_format($thisTime-$lastTime, 6).'s</td></tr>'; } else { $startTime = $thisTime; } $p++; $lastTime = $thisTime; } echo '</tbody><tfoot>
<tr style="border-top:2px solid black"><th style="text-align:right">TOTAL: </th><td>'.number_format($lastTime-$startTime, 6).'s</td></tr>
</tfoot>
</table>'; } public static function save($content, $filename_path) { try { $handle = fopen($filename_path, "w"); fwrite($handle, $content); fclose($handle); return true; } catch (Exception $e) { echo 'Exception reçue : ', $e->getMessage(), "\n"; } } } QRtools::markTime('start'); define('QRSPEC_VERSION_MAX', 40); define('QRSPEC_WIDTH_MAX', 177); define('QRCAP_WIDTH', 0); define('QRCAP_WORDS', 1); define('QRCAP_REMINDER', 2); define('QRCAP_EC', 3); class QRspec { public static $capacity = array( array( 0, 0, 0, array( 0, 0, 0, 0)), array( 21, 26, 0, array( 7, 10, 13, 17)), array( 25, 44, 7, array( 10, 16, 22, 28)), array( 29, 70, 7, array( 15, 26, 36, 44)), array( 33, 100, 7, array( 20, 36, 52, 64)), array( 37, 134, 7, array( 26, 48, 72, 88)), array( 41, 172, 7, array( 36, 64, 96, 112)), array( 45, 196, 0, array( 40, 72, 108, 130)), array( 49, 242, 0, array( 48, 88, 132, 156)), array( 53, 292, 0, array( 60, 110, 160, 192)), array( 57, 346, 0, array( 72, 130, 192, 224)), array( 61, 404, 0, array( 80, 150, 224, 264)), array( 65, 466, 0, array( 96, 176, 260, 308)), array( 69, 532, 0, array( 104, 198, 288, 352)), array( 73, 581, 3, array( 120, 216, 320, 384)), array( 77, 655, 3, array( 132, 240, 360, 432)), array( 81, 733, 3, array( 144, 280, 408, 480)), array( 85, 815, 3, array( 168, 308, 448, 532)), array( 89, 901, 3, array( 180, 338, 504, 588)), array( 93, 991, 3, array( 196, 364, 546, 650)), array( 97, 1085, 3, array( 224, 416, 600, 700)), array(101, 1156, 4, array( 224, 442, 644, 750)), array(105, 1258, 4, array( 252, 476, 690, 816)), array(109, 1364, 4, array( 270, 504, 750, 900)), array(113, 1474, 4, array( 300, 560, 810, 960)), array(117, 1588, 4, array( 312, 588, 870, 1050)), array(121, 1706, 4, array( 336, 644, 952, 1110)), array(125, 1828, 4, array( 360, 700, 1020, 1200)), array(129, 1921, 3, array( 390, 728, 1050, 1260)), array(133, 2051, 3, array( 420, 784, 1140, 1350)), array(137, 2185, 3, array( 450, 812, 1200, 1440)), array(141, 2323, 3, array( 480, 868, 1290, 1530)), array(145, 2465, 3, array( 510, 924, 1350, 1620)), array(149, 2611, 3, array( 540, 980, 1440, 1710)), array(153, 2761, 3, array( 570, 1036, 1530, 1800)), array(157, 2876, 0, array( 570, 1064, 1590, 1890)), array(161, 3034, 0, array( 600, 1120, 1680, 1980)), array(165, 3196, 0, array( 630, 1204, 1770, 2100)), array(169, 3362, 0, array( 660, 1260, 1860, 2220)), array(173, 3532, 0, array( 720, 1316, 1950, 2310)), array(177, 3706, 0, array( 750, 1372, 2040, 2430)) ); public static function getDataLength($version, $level) { return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level]; } public static function getECCLength($version, $level) { return self::$capacity[$version][QRCAP_EC][$level]; } public static function getWidth($version) { return self::$capacity[$version][QRCAP_WIDTH]; } public static function getRemainder($version) { return self::$capacity[$version][QRCAP_REMINDER]; } public static function getMinimumVersion($size, $level) { for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) { $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level]; if($words >= $size) return $i; } return -1; } public static $lengthTableBits = array( array(10, 12, 14), array( 9, 11, 13), array( 8, 16, 16), array( 8, 10, 12) ); public static function lengthIndicator($mode, $version) { if ($mode == QR_MODE_STRUCTURE) return 0; if ($version <= 9) { $l = 0; } else if ($version <= 26) { $l = 1; } else { $l = 2; } return self::$lengthTableBits[$mode][$l]; } public static function maximumWords($mode, $version) { if($mode == QR_MODE_STRUCTURE) return 3; if($version <= 9) { $l = 0; } else if($version <= 26) { $l = 1; } else { $l = 2; } $bits = self::$lengthTableBits[$mode][$l]; $words = (1 << $bits) - 1; if($mode == QR_MODE_KANJI) { $words *= 2; } return $words; } public static $eccTable = array( array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), array(array( 2, 0), array( 4, 0), array(
没有合适的资源?快使用搜索试试~ 我知道了~
雨尘交友盲盒系统一款PHP开源的盲盒系统
共343个文件
js:175个
png:73个
php:53个
需积分: 8 0 下载量 136 浏览量
2023-04-06
23:45:37
上传
评论
收藏 14.56MB ZIP 举报
温馨提示
雨尘交友盲盒系统一款PHP开源的盲盒系统 PHP版本:PHP7及以上 导入sql文件到数据库 修改config.php文件数据库配置信息 后台地址:域名/admin admin 123456
资源推荐
资源详情
资源评论
收起资源包目录
雨尘交友盲盒系统一款PHP开源的盲盒系统 (343个子文件)
style.min.css 110KB
bootstrap.min.css 106KB
materialdesignicons.min.css 85KB
animate.css 71KB
toudi_style.css 50KB
user_style.css 47KB
index_style.css 29KB
bootstrap-datepicker3.css 22KB
jquery-confirm.min.css 22KB
bootstrap-datepicker3.min.css 21KB
jiameng_style.css 19KB
huzan_style.css 15KB
jifen_style.css 14KB
manghe_style.css 14KB
ion.rangeSlider.min.css 11KB
bootstrap-datetimepicker.css 9KB
bootstrap-datetimepicker.min.css 8KB
logs_style.css 7KB
qie_style.css 7KB
bootstrap-colorpicker.css 5KB
bootstrap-colorpicker.min.css 4KB
jquery.tagsinput.min.css 903B
admin.css 797B
materialdesignicons.eot 286KB
qiandao.gif 2.76MB
mh.gif- 6.7MB
alipay.ico 4KB
wechat.ico 1KB
qqpay.ico 1KB
tenpay.ico 1KB
adv1.jpg 679KB
tj.jpg 23KB
Chart.js 536KB
layui.js 284KB
bootstrap-datetimepicker.js 101KB
jquery.min.js 82KB
bootstrap-datepicker.js 57KB
ion.rangeSlider.min.js 40KB
bootstrap-datetimepicker.min.js 37KB
bootstrap.min.js 36KB
moment.min.js 35KB
bootstrap-datepicker.min.js 33KB
bootstrap-colorpicker.js 32KB
chosen.jquery.min.js 28KB
jquery-confirm.min.js 28KB
zepto.min.js 26KB
bootstrap-colorpicker.min.js 18KB
perfect-scrollbar.min.js 18KB
main.js 11KB
slider.js 9KB
bootstrap-notify.min.js 8KB
jquery.bootstrap.wizard.min.js 7KB
ru.js 6KB
jquery.tagsinput.min.js 6KB
uk.js 6KB
sl.js 6KB
be.js 6KB
main.min.js 6KB
sk.js 6KB
cs.js 6KB
ar.js 5KB
bo.js 5KB
lb.js 5KB
zh-cn.js 5KB
lt.js 5KB
ne.js 5KB
ka.js 5KB
bs.js 4KB
hr.js 4KB
mr.js 4KB
sr-cyrl.js 4KB
hi.js 4KB
ta.js 4KB
is.js 4KB
bn.js 4KB
hy-am.js 4KB
me.js 4KB
sr.js 4KB
el.js 4KB
hu.js 4KB
pl.js 4KB
lv.js 4KB
fi.js 4KB
fa.js 3KB
zh-tw.js 3KB
ar-sa.js 3KB
mk.js 3KB
ml.js 3KB
my.js 3KB
bg.js 3KB
br.js 3KB
az.js 3KB
tzl.js 3KB
th.js 3KB
et.js 3KB
he.js 3KB
jv.js 3KB
tr.js 3KB
id.js 3KB
es.js 3KB
共 343 条
- 1
- 2
- 3
- 4
资源评论
天不生Theshy
- 粉丝: 0
- 资源: 45
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 实验二:IP协议分析.zip
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功