diff --git a/application/admin/controller/general/File.php b/application/admin/controller/general/File.php index 70f7c3e..62fe4c6 100644 --- a/application/admin/controller/general/File.php +++ b/application/admin/controller/general/File.php @@ -45,14 +45,11 @@ class File extends Backend 'order' => $order ], $rows, $page); - $cosConfig = function_exists('get_addon_config') ? get_addon_config('cos') : []; - $cdnUrl = (!empty($cosConfig['cdnurl'])) ? rtrim($cosConfig['cdnurl'], '/') : ''; - if (!empty($result['list'])) { foreach ($result['list'] as &$v) { $v['checked'] = false; $v['showTools'] = false; - $v['fullurl'] = (!empty($cdnUrl) && stripos($v['url'], 'http') !== 0) ? ($cdnUrl . $v['url']) : cdnurl($v['url'], true); + $v['fullurl'] = cdnurl($v['url'], true); } } diff --git a/application/common.php b/application/common.php index 0dea3e5..0f32db2 100644 --- a/application/common.php +++ b/application/common.php @@ -519,7 +519,16 @@ if (!function_exists('cdnurl')) { { $regex = "/^((?:[a-z]+:)?\/\/|data:image\/)(.*)/i"; $cdnurl = \think\Config::get('upload.cdnurl'); - $url = is_array($url) ? $url[0] : $url; + if (empty($cdnurl) && function_exists('get_addon_config')) { + $cosConfig = get_addon_config('cos'); + if (!empty($cosConfig['cdnurl'])) { + $cdnurl = rtrim($cosConfig['cdnurl'], '/'); + } + } + $url = is_array($url) ? $url[0] : $url; + if (empty($url)) { + return ''; + } if (is_bool($domain) || stripos($cdnurl, '/') === 0) { $url = preg_match($regex, $url) || ($cdnurl && stripos($url, $cdnurl) === 0) ? $url : $cdnurl . $url; } @@ -527,6 +536,15 @@ if (!function_exists('cdnurl')) { $domain = is_bool($domain) ? request()->domain() : $domain; $url = $domain . $url; } + + // 采用COS图片处理参数将图片最大宽度限制在1000px以内并转为webp格式 + if (!empty($cdnurl) && stripos($url, $cdnurl) !== false) { + if (preg_match('/\.(jpg|jpeg|png|bmp|webp)(\?.*)?$/i', $url) && stripos($url, 'imageMogr2') === false) { + $separator = (strpos($url, '?') !== false) ? '&' : '?'; + $url .= $separator . 'imageMogr2/thumbnail/1000x%3E/format/webp'; + } + } + return $url; } }