<?php
/**
* 作者: 深秋
* QQ : 1361582519
* 官方QQ群: 758107405
* GitHub: https://github.com/kaindev8/starMQ
* 保留版权信息,尊重开源精神!
* 禁止修改此文件!
*/
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));
}
}
define('QR_CACHEABLE', false);
define('QR_CACHE_DIR', false);
define('QR_LOG_DIR', false);
define('QR_FIND_BEST_MASK', true);
define('QR_FIND_FROM_RANDOM', 2);
define('QR_DEFAULT_MASK', 2);
define('QR_PNG_MAXIMUM_SIZE', 1024);
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>';
}
}
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)), // 1
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)), // 5
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)), //10
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)), //15
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)), //20
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)), //25
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)), //30
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)), //35
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, 22
没有合适的资源?快使用搜索试试~ 我知道了~
开源的个人收款免签约解决方案 .zip
共691个文件
php:509个
md:28个
json:20个
需积分: 3 0 下载量 166 浏览量
2024-01-15
10:48:16
上传
评论
收藏 26.53MB ZIP 举报
温馨提示
拒绝高风险的扫码登录方式,采用APP监听系统收款通知方案,更安全可靠,使用易支付接口,对接更便捷! 方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一种达成这些目标的计划。无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化: 方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的效益,提高效率并减少浪费。 风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据驱动的方法有助于减少不确定性,提高决策的准确性。 团队协作: 复杂的问题通常需要多个人的协同努力。方案提供了一个共同的框架,帮助团队成员理解各自的职责和任务,促进协作并确保整个团队朝着共同的目标努力。 监控与评估: 方案通常包括监控和评估的机制,以确保实施的有效性。通过定期的评估,可以及时调整方案,以适应变化的环境或新的挑战。 总体而言,方案的作用在于提供一种有序、有计划的方法,以解决问题、实现目标,并在实施过程中最大化资源利用和风险管理。
资源推荐
资源详情
资源评论
收起资源包目录
开源的个人收款免签约解决方案 .zip (691个子文件)
StarMQ.apk 24.4MB
var-dump-server.bat 137B
codebase.min-5.4.css 504KB
elegance.min-5.4.css 69KB
corporate.min-5.4.css 69KB
flat.min-5.4.css 69KB
pulse.min-5.4.css 69KB
earth.min-5.4.css 69KB
bootstrap-datepicker3.min.css 21KB
layer.css 18KB
dropzone.min.css 10KB
dataTables.bootstrap5.min.css 8KB
htmlDescriptor.css 3KB
nprogress.css 1KB
phpunit.xml.dist 826B
phpunit.xml.dist 826B
phpunit.xml.dist 559B
.editorconfig 271B
.editorconfig 131B
hiddeninput.exe 26KB
.gitattributes 70B
.gitignore 104B
.gitignore 52B
.gitignore 42B
.gitignore 37B
.gitignore 35B
.gitignore 29B
.gitignore 27B
.gitignore 14B
.gitignore 13B
.gitignore 6B
.gitignore 6B
.gitignore 6B
nginx.htaccess 105B
.htaccess 13B
.htaccess 0B
header.html 15KB
channel.html 10KB
index.html 9KB
console.html 8KB
login.html 7KB
order.html 7KB
index.html 6KB
temp.html 6KB
jk.html 6KB
config.html 5KB
log.html 5KB
user.html 3KB
smtp.html 2KB
index.html 468B
submit.html 263B
favicon.ico 921B
photo34@2x.jpg 600KB
ali.jpg 236KB
wx.jpg 130KB
wxpay.jpg 3KB
alipay.jpg 2KB
chart.min.js 195KB
codebase.app.min-5.4.js 183KB
dropzone.min.js 112KB
jquery.min.js 88KB
index.js 65KB
bootstrap-datepicker.min.js 33KB
jquery.validate.min.js 24KB
layer.js 22KB
pwstrength-bootstrap.min.js 14KB
bootstrap-notify.min.js 8KB
be_pages_dashboard.min.js 2KB
op_auth_signin.min.js 624B
htmlDescriptor.js 354B
installed.json 87KB
composer.json 2KB
composer.json 2KB
composer.json 1KB
composer.json 1KB
composer.json 1KB
composer.json 945B
composer.json 848B
composer.json 824B
composer.json 792B
composer.json 740B
composer.json 720B
composer.json 651B
composer.json 621B
composer.json 562B
composer.json 559B
composer.json 552B
composer.json 513B
composer.json 418B
composer.json 395B
LICENSE 11KB
LICENSE 11KB
LICENSE 11KB
LICENSE 11KB
LICENSE 11KB
LICENSE 11KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
LICENSE 1KB
共 691 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
JJJ69
- 粉丝: 6004
- 资源: 5593
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术面试最后反问面试官的话 校招面试非技术问题有哪些 非技术问题如何回答.png
- NB-IOT-BC26全网通模块Altium+ CADENCE +PADS三种格式(原理图SCH+PCB封装库)文件.zip
- 基于微信小程序开发的校园失物招领系统源码毕业设计(优质项目源码).zip
- 词向量是一种将自然语言中的单词转换为数值向量的技术,它能够捕捉词义和上下文信息
- nmap与masscan的简单使用
- MyBatis动态SQL.pdf
- 基于stm32单片机protues仿真的温湿度控制系统设计(仿真图、源代码)
- 词向量:自然语言处理的基石
- mybatis动态sql
- 40G微信小程序开发教程(工具插件+视频教程)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功