<?php
namespace org;
// Encoding modes
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);
// Levels of error correction.
define('QR_ECLEVEL_L', 0);
define('QR_ECLEVEL_M', 1);
define('QR_ECLEVEL_Q', 2);
define('QR_ECLEVEL_H', 3);
// Supported output formats
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));
}
}
//---- merged_config.php -----------------------------
define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there
define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true
define('QR_LOG_DIR', false); // default error logs dir
define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
//---- qrtools.php -----------------------------
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');
//---- qrspec.php -----------------------------
/*
* PHP QR Code encoder
*/
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);
没有合适的资源?快使用搜索试试~ 我知道了~
2022最新版发卡系统源码
共2000个文件
php:612个
png:567个
js:417个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 111 浏览量
2022-04-18
12:24:32
上传
评论
收藏 42.02MB RAR 举报
温馨提示
没有授权,亲测可用 功能很全 十多套模板! 安装后,提示“非法host”“非法地址” 先登录后台,分站配置,主域名填成自己的! 伪静态thinkphp 运行目录public 测试环境 Nginx+PHP 7.2+mysql5.6 仅供研究学习使用!
资源推荐
资源详情
资源评论
收起资源包目录
2022最新版发卡系统源码
(2000个子文件)
weui.css 357KB
amazeui.flat.css 325KB
amazeui.flat.css 325KB
amazeui.css 324KB
amazeui.css 324KB
amazeui.flat.min.css 250KB
amazeui.flat.min.css 250KB
amazeui.min.css 249KB
amazeui.min.css 249KB
iconfont.css 167KB
iconfont.css 166KB
style.css 157KB
iconfont.css-v=2017070719.css 152KB
style.css 150KB
style_2.css 150KB
style.css 150KB
style.css-v=3.0.0.css 148KB
vendor.css 134KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
bootstrap.min.css 111KB
bootstrap.min.css 108KB
style.min.css 106KB
style.min.css 106KB
style.min.css 97KB
style.min.css 97KB
foxui.min.css 94KB
iconfont.css 93KB
foxui.min.css 90KB
foxui.min_1.css 90KB
foxui.min.css 90KB
foxui.min.css-v=0.2.css 88KB
buttons.css 80KB
person_content.css 70KB
basic.css 68KB
basic.css 68KB
layui.css 68KB
jquery-weui.css 67KB
jquery-weui.css 67KB
jquery-weui.min.css 61KB
layui.css 58KB
weui.min.css 56KB
jquery-weui.min.css 55KB
style.css 55KB
animate.min.css 54KB
animate.min.css 54KB
layui.css 52KB
weui.min.css 50KB
layui.css 50KB
layui.css 50KB
layui.css 50KB
layui.css 50KB
layui.css 50KB
animate.min.css 46KB
animate.min.css 46KB
ueditor.css 45KB
jquery-ui.css 39KB
jquery-ui.css 39KB
ueditor.min.css 34KB
datepicker3.css 33KB
datepicker3.css 33KB
frozen.css 32KB
aos.css 31KB
font-awesome.min.css 30KB
center.css 28KB
center_bark.css 28KB
font-awesome.min.css 26KB
font-awesome.min.css 26KB
style.min.css 25KB
style.min.css 25KB
foxui.diy.css-v=201705261600.css 25KB
foxui.diy.css-v=201610091000.css 25KB
font_82607_e93d131lklr6n7b9.css 25KB
font_82607_e93d131lklr6n7b9.css 25KB
cart.css 24KB
style_1.css 24KB
style20170419.css 24KB
css7.css 23KB
ak_style.css 23KB
sweetalert.css 22KB
common.css 22KB
video-js.css 22KB
common.css 21KB
common.css 21KB
common.css 21KB
swiper-4.2.6.min.css 19KB
main.css 19KB
main.css 19KB
image.css 19KB
coupon.css-v=2.0.0.css 18KB
publish_need.css 18KB
sweetalert.css 18KB
sweetalert.css 18KB
style.css 17KB
style.css 17KB
swiper.min.css 17KB
swiper.min.css 17KB
swiper.min.css 17KB
style_1.css 16KB
style_3.css 16KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
stbomei
- 粉丝: 44
- 资源: 1180
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Pytorch+YOLOv5+SlowFast实现的视频流实时动作检测算法-支持多目标的跟踪检测源码
- Halcon仿射变换详解
- 局部遮阴下光伏MPPT-粒子群算法,仿真模型
- GD32H7xx pack包
- Midjourney 常用参数列表
- 光伏MPPT仿真-电导增量法,仿真模型,可替自建光伏电池,有Video explanation(原创)
- Linux应用开发实训:基于51单片机的智能大棚管理系统设计与实现
- 福昕Foxit PDF语言包OCR-Lang-Chinese
- 3 Halcon基础之形态学算子
- 20230925-Halcon的3D点云筛选与切割过程详解
- 2024年大模型轻量化技术研究报告.pdf
- 电磁无损检测中扫频与脉冲涡流探伤的理论及实验研究(多层结构缺陷表征)
- 特征稀疏主子空间学习:低秩协方差矩阵全局优化算法与一般情况迭代求解的研究
- 脉冲调制涡流检测中漏斗形探头对导体内部缺陷敏感度增强的研究
- 7 【Halcon深度学习】水果分拣系统实战
- 美食点餐系-JAVA-基于微信美食点餐系统小程序的设计与实现(毕业论文)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功