PluginProbe
WPJAM Basic / trunk
WPJAM Basic vtrunk
wpjam-basic / cdn / qcloud_cos.php

qcloud_cos.php in WPJAM Basic trunk, at cdn/qcloud_cos.php

69 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 function wpjam_get_qcloud_cos_thumbnail($img_url, $args=[]){
3 if($img_url && (!wpjam_is_image($img_url) || !wpjam_is_cdn_url($img_url))){
4 return $img_url;
5 }
6
7 $args = wp_parse_args($args, [
8 'crop' => 1,
9 'width' => 0,
10 'height' => 0,
11 'webp' => wpjam_cdn_get_setting('webp') && wpjam_is_webp_supported(),
12 'interlace' => wpjam_cdn_get_setting('interlace'),
13 'quality' => wpjam_cdn_get_setting('quality'),
14 'watermark' => '',
15 'dissolve' => wpjam_cdn_get_setting('dissolve') ?: 100,
16 'gravity' => wpjam_cdn_get_setting('gravity') ?: 'SouthEast',
17 'dx' => wpjam_cdn_get_setting('dx') ?: 10,
18 'dy' => wpjam_cdn_get_setting('dy') ?: 10,
19 'spcent' => 10
20 ]);
21
22 $width = $args['width'];
23 $height = $args['height'];
24 $width = $width > 10000 ? '' : $width;
25 $height = $height > 10000 ? '' : $height;
26
27 $thumb_arg = '';
28
29 if($width || $height){
30 $thumb_arg .= '/thumbnail/';
31
32 if($width && $height){
33 $thumb_arg .= '!'.$width.'x'.$height.'r';
34 $thumb_arg .= $args['crop'] ? '|imageMogr2/gravity/Center/crop/'.$width.'x'.$height.'' : ''; // 只有都设置了宽度和高度才裁剪
35 }else{
36 $thumb_arg .= $width.'x'.$height;
37 }
38 }
39
40 $thumb_arg .= $args['webp'] ? '/format/webp' : ($args['interlace'] ? '/interlace/'.$args['interlace'] : '');
41 $thumb_arg .= $args['quality'] ? '/quality/'.$args['quality'] : '';
42 $thumb_arg = $thumb_arg ? 'imageMogr2'.$thumb_arg : '';
43
44 if((!empty($args['content']) || $args['watermark']) && strpos($img_url, '.gif') === false){
45 $watermark = $args['watermark'] ?: wpjam_cdn_get_setting('watermark');
46
47 if(array_all(['width', 'height'], fn($k)=> $args[$k] >= (int)wpjam_cdn_get_setting('wm_'.$k)) && $watermark){
48 $thumb_arg .= ($thumb_arg ? '|' : '').'watermark/1/image/'.base64_urlencode($watermark);
49 $thumb_arg = array_reduce(['dissolve', 'gravity', 'dx', 'dy', 'spcent'], fn($c, $k)=> $c.'/'.$k.'/'.$args[$k], $thumb_arg);
50 }
51 }
52
53 if($thumb_arg){
54 $query_args = [];
55
56 if($query = parse_url($img_url, PHP_URL_QUERY)){
57 $img_url = str_replace('?'.$query, '', $img_url);
58 $query_args = wpjam_filter(wp_parse_args($query), fn($v, $k)=> strpos($k, 'imageMogr2/') === false && strpos($k, 'watermark/') === false);
59 }
60
61 $query_args[$thumb_arg] = '';
62
63 return add_query_arg($query_args, $img_url);
64 }
65
66 return $img_url;
67 }
68
69 return 'wpjam_get_qcloud_cos_thumbnail';