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

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

118 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 add_filter('wpjam_thumbnail', 'wpjam_get_qiniu_thumbnail',10,2);
3
4 //使用七牛缩图 API 进行裁图
5 function wpjam_get_qiniu_thumbnail($img_url, $args=[]){
6 if($img_url && (!wpjam_is_image($img_url) || !wpjam_is_cdn_url($img_url))){
7 return $img_url;
8 }
9
10 extract(wp_parse_args($args, array(
11 'crop' => 1,
12 'width' => 0,
13 'height' => 0,
14 'mode' => null,
15 'interlace' => wpjam_cdn_get_setting('interlace'),
16 'quality' => wpjam_cdn_get_setting('quality'),
17 )));
18
19 if($height > 10000){
20 $height = 0;
21 }
22
23 if($width > 10000){
24 $height = 0;
25 }
26
27 if($mode === null){
28 $crop = $crop && ($width && $height); // 只有都设置了宽度和高度才裁剪
29 $mode = $mode?:($crop?1:2);
30 }
31
32 if($width || $height){
33 $arg = 'imageView2/'.$mode;
34
35 if($width) $arg .= '/w/'.$width;
36 if($height) $arg .= '/h/'.$height;
37 if($interlace) $arg .= '/interlace/'.$interlace;
38 if($quality) $arg .= '/q/'.$quality;
39
40 if(strpos($img_url, 'imageView2/')){
41 $img_url = preg_replace('/imageView2\/(.*?)#/', '', $img_url);
42 }
43
44 if(strpos($img_url, 'watermark/')){
45 $img_url = $img_url.'|'.$arg;
46 }else{
47 $img_url = add_query_arg( array($arg => ''), $img_url );
48 }
49
50 if((!empty($args['content']) || !empty($args['watermark']))
51 && strpos($img_url, 'watermark/') === false
52 && strpos($img_url, '.gif') === false
53 && !isset($_GET['preview'])
54 ){
55 $img_url = wpjam_get_qiniu_watermark($img_url, $args);
56 }
57
58 $img_url = $img_url.'#';
59 }
60
61 return $img_url;
62 }
63
64 // 获取七牛水印
65 function wpjam_get_qiniu_watermark($img_url, $args=array()){
66 $args = wp_parse_args($args, [
67 'watermark' => wpjam_cdn_get_setting('watermark'),
68 'dissolve' => wpjam_cdn_get_setting('dissolve') ?: '100',
69 'gravity' => wpjam_cdn_get_setting('gravity', 'SouthEast'),
70 'dx' => wpjam_cdn_get_setting('dx', 10),
71 'dy' => wpjam_cdn_get_setting('dy', 10),
72 'ws' => 0
73 ]);
74
75 if($args['watermark']){
76 $watermark = 'watermark/1/image/'.base64_urlencode($args['watermark']);
77
78 foreach(['dissolve'=>100, 'gravity'=>'SouthEast', 'dx'=>10, 'dy'=>10, 'ws'=>0] as $key=>$default){
79 if($args[$key] != $default){
80 $watermark .= '/'.$key.'/'.$args[$key];
81 }
82 }
83
84 if(strpos($img_url, 'imageView2')){
85 $img_url = $img_url.'|'.$watermark;
86 }else{
87 $img_url = add_query_arg(array($watermark=>''), $img_url);
88 }
89 }
90
91 return $img_url;
92 }
93
94 function wpjam_get_qiuniu_timestamp($img_url){
95 $t = dechex(time()+HOUR_IN_SECONDS*6);
96 $key = '';
97 $path = parse_url($img_url, PHP_URL_PATH);
98 $sign = strtolower(md5($key.$path.$t));
99
100 return add_query_arg(array('sign' => $sign, 't'=>$t), $img_url);
101 }
102
103 function wpjam_get_qiniu_image_info($img_url){
104 $img_url = add_query_arg(array('imageInfo'=>''),$img_url);
105
106 $response = wp_safe_remote_get($img_url);
107 if(is_wp_error($response)){
108 return $response;
109 }
110
111 $response = json_decode($response['body'], true);
112
113 if(isset($response['error'])){
114 return new WP_Error('error', $response['error']);
115 }
116
117 return $response;
118 }