public function run() { trigger('imerge_start', $this); mark('开始自动合图扫描', 'emphasize'); $files = get_files_by_type(C('SRC.SRC_PATH'), 'css'); $generator = new MergeConfigGenerator($files); $generator->generate(); $writer = new MergeConfigWriter(C('IMERGE_PATH')); $writer->writeImageConfig($generator->getConfig()); // 更新大图 $this->updateSprite(); trigger('imerge_end', $this); }
/** * 加载所有大图配置 * @return array */ public function getSpriteConfig() { $ret = array(); $path = $this->root . '/' . C('IMERGE_SPRITE_DIR'); $files = get_files_by_type($path, 'php'); foreach ($files as $file) { // $temp = include($file); // $ret = array_merge($ret, $temp); $type = basename($file, '.php'); $ret[$type] = (include $file); } return $ret; }
/** * 扫描所有文件 * @param $paths 扫描目录 * @param $types 扫描文件类型 * @return array 文件列表数组 */ private function getFileList($paths, $types, $base = '') { // 使用object,进行引用传参 $ret = new stdClass(); $ret->return = null; trigger('processor_fetch_files', $paths, $types, $ret); return is_null($ret->return) ? get_files_by_type($paths, $types, $base) : $ret->return; }
/** * 获取所有图片列表 * 用于智能提示 */ public function hint() { if (!isset($_GET['key'])) { show_json('No key!'); return; } $ret = array(); $key = $_GET['key']; $total = 8; $count = 0; $options = $this->tool->getOptions(); $scanPath = null; foreach ($options['process'] as $process) { if ($process['processor'] === 'media') { $scanPath = $process['from']; } } if ($scanPath) { $srcPath = C('SRC.SRC_PATH'); $len = strlen($srcPath); $fileList = get_files_by_type($scanPath, 'png', $srcPath); foreach ($fileList as $index => $file) { if ($count >= $total) { break; } $file = substr($file, $len); if (strpos($file, $key) !== false) { array_push($ret, $file); $count++; } } show_json($ret); } }
/** * 生成合图md5信息 */ private static function genMd5Map() { $images = get_files_by_type(C('IMERGE_PATH') . '/' . C('IMERGE_SPRITE_DIR'), 'png'); foreach ($images as $image) { self::$md5Map[basename($image)] = md5(file_get_contents($image)); } }