feat(image): 全局支持COS图片压缩参数限制最大宽度1000px并转换为webp

这个提交包含在:
wikiboss
2026-10-17 16:13:26 +08:00
父节点 2a95de4225
当前提交 859886636f
共有 2 个文件被更改,包括 20 次插入 和 5 次删除

查看文件

@@ -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);
}
}

查看文件

@@ -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;
}
}