ImageMogrTemplate.php
12.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<?php
namespace Qcloud\Cos\ImageParamTemplate;
/**
* Class ImageMogrTemplate imageMogr2 接口参数
* @package Qcloud\Cos\ImageParamTemplate
*/
class ImageMogrTemplate extends ImageTemplate
{
private $tranParams;
private $tranString;
public function __construct() {
parent::__construct();
$this->tranParams = array();
$this->tranString = "";
}
/**
* 指定图片的宽高为原图的 Scale%
* @param $widthScale
*/
public function thumbnailByScale($widthScale) {
$this->tranParams[] = "/thumbnail/!" . $widthScale . "p";
}
/**
* 指定图片的宽为原图的 Scale%,高度不变
* @param $heightScale
*/
public function thumbnailByWidthScale($heightScale) {
$this->tranParams[] = "/thumbnail/!" . $heightScale . "px";
}
/**
* 指定图片的高为原图的 Scale%,宽度不变
* @param $scale
*/
public function thumbnailByHeightScale($scale) {
$this->tranParams[] = "/thumbnail/!x" . $scale . "p";
}
/**
* 指定目标图片宽度为 Width,高度等比缩放
* @param $width
*/
public function thumbnailByWidth($width) {
$this->tranParams[] = "/thumbnail/" . $width . "x";
}
/**
* 指定目标图片高度为 Height,宽度等比缩放
* @param $height
*/
public function thumbnailByHeight($height) {
$this->tranParams[] = "/thumbnail/x" . $height;
}
/**
* 限定缩略图的宽度和高度的最大值分别为 Width 和 Height,进行等比缩放
* @param $maxW
* @param $maxH
*/
public function thumbnailByMaxWH($maxW, $maxH) {
$this->tranParams[] = "/thumbnail/" . $maxW . "x" . $maxH;
}
/**
* 限定缩略图的宽度和高度的最小值分别为 Width 和 Height,进行等比缩放
* @param $minW
* @param $minH
*/
public function thumbnailByMinWH($minW, $minH) {
$this->tranParams[] = "/thumbnail/!" . $minW . "x" . $minH . "r" ;
}
/**
* 忽略原图宽高比例,指定图片宽度为 Width,高度为 Height,强行缩放图片,可能导致目标图片变形
* @param $width
* @param $height
*/
public function thumbnailByWH($width, $height) {
$this->tranParams[] = "/thumbnail/" . $width . "x" . $height . "!";
}
/**
* 限定缩略图的宽度和高度的最大值分别为 Width 和 Height,进行等比缩小,比例值为宽缩放比和高缩放比的较小值,如果目标宽(高)都大于原图宽(高),则不变
* @param $width
* @param $height
*/
public function thumbnailEqualRatioReduceByWH($width, $height) {
$this->tranParams[] = "/thumbnail/{$width}x{$height}>";
}
/**
* 限定缩略图的宽度和高度的最大值分别为 Width 和 Height,进行等比放大,比例值为宽缩放比和高缩放比的较小值。如果目标宽(高)小于原图宽(高),则不变
* @param $width
* @param $height
*/
public function thumbnailEqualRatioEnlargeByWH($width, $height) {
$this->tranParams[] = "/thumbnail/{$width}x{$height}<";
}
/**
* 等比缩放图片,缩放后的图像,总像素数量不超过 $pixel
* @param $pixel
*/
public function thumbnailByPixel($pixel) {
$this->tranParams[] = "/thumbnail/" . $pixel . "@";
}
/**
* 将原图缩放为指定 Width 和 Height 的矩形内的最大图片,之后使用 color 参数指定的颜色居中填充空白部分;取值0或1,0代表不使用 pad 模式,1代表使用 pad 模式
* @param $is
*/
public function pad($is) {
$this->tranParams[] = "/pad/{$is}";
}
/**
* 填充颜色,缺省为白色,需设置为十六进制 RGB 格式(如 #FF0000),详情参考 RGB 编码表,需经过 URL 安全的 Base64 编码,默认值为 #3D3D3D
* @param $rgb
*/
public function color($rgb) {
$rgb = $this->ciBase64($rgb);
$this->tranParams[] = "/color/{$rgb}";
}
/**
* 当处理参数中携带此参数时,针对文件过大、参数超限等导致处理失败的场景,会直接返回原图而不报错
*/
public function ignoreError() {
$this->tranParams[] = "/ignore-error/1";
}
/**
* 普通裁剪参数说明 操作名称:cut
* @param $width
* @param $height
* @param $dx
* @param $dy
*/
public function cut($width, $height, $dx, $dy) {
$this->tranParams[] = "/cut/" . $width . "x" . "$height" . "x" . $dx . "x" . $dy;
}
/**
* 指定目标图片宽度为 Width,高度不变。Width 取值范围应大于0,小于原图宽度
* @param $width
* @param string $gravity 指定操作的起点位置
*/
public function cropByWidth($width, $gravity = "") {
$temp = "/crop/" . $width . "x";
if($gravity){
$temp .= "/gravity/" . $gravity;
}
$this->tranParams[] = $temp;
}
/**
* 指定目标图片高度为 Height,宽度不变。Height 取值范围应大于0,小于原图高度
* @param $height
* @param string $gravity 指定操作的起点位置
*/
public function cropByHeight($height, $gravity = "") {
$temp = "/crop/x" . $height;
if($gravity){
$temp .= "/gravity/" . $gravity;
}
$this->tranParams[] = $temp;
}
/**
* 指定目标图片宽度为 Width,高度为 Height 。Width 和 Height 取值范围都应大于0,小于原图宽度/高度
* @param $width
* @param $height
* @param string $gravity 指定操作的起点位置
*/
public function cropByWH($width, $height, $gravity = "") {
$temp = "/crop/" . $width . "x" . $height;
if($gravity){
$temp .= "/gravity/" . $gravity;
}
$this->tranParams[] = $temp;
}
/**
* 内切圆裁剪功能,radius 是内切圆的半径,取值范围为大于0且小于原图最小边一半的整数。内切圆的圆心为图片的中心。图片格式为 gif 时,不支持该参数。
* @param $radius
*/
public function iradius($radius) {
$this->tranParams[] = "/iradius/" . $radius;
}
/**
* 圆角裁剪功能,radius 为图片圆角边缘的半径,取值范围为大于0且小于原图最小边一半的整数。圆角与原图边缘相切。图片格式为 gif 时,不支持该参数。
* @param $radius
*/
public function rradius($radius) {
$this->tranParams[] = "/rradius/" . $radius;
}
/**
* 基于图片中的人脸位置进行缩放裁剪。目标图片的宽度为 Width、高度为 Height。
* @param $width
* @param $height
*/
public function scrop($width, $height) {
$this->tranParams[] = "/scrop/" . $width . "x" . $height;
}
/**
* 普通旋转:图片顺时针旋转角度,取值范围0 - 360,默认不旋转。
* @param $degree
*/
public function rotate($degree) {
$this->tranParams[] = "/rotate/" . $degree;
}
/**
* 自适应旋转:根据原图 EXIF 信息将图片自适应旋转回正。
*/
public function autoOrient() {
$this->tranParams[] = "/auto-orient";
}
/**
* 镜像翻转:flip 值为 vertical 表示垂直翻转,horizontal 表示水平翻转
* @param $flip
*/
public function flip($flip) {
$this->tranParams[] = "/flip/" . $flip;
}
/**
* 格式转换:目标缩略图的图片格式可为:jpg,bmp,gif,png,webp,yjpeg 等,其中 yjpeg 为数据万象针对 jpeg 格式进行的优化,本质为 jpg 格式;缺省为原图格式。
* @param $format
*/
public function format($format) {
$this->tranParams[] = "/format/" . $format;
}
/**
* gif 格式优化:只针对原图为 gif 格式,对 gif 图片格式进行的优化,降帧降颜色。分为以下两种情况:
* FrameNumber=1,则按照默认帧数30处理,如果图片帧数大于该帧数则截取。
* FrameNumber 取值( 1,100 ],则将图片压缩到指定帧数 (FrameNumber)。
* @param $frameNumber
*/
public function gifOptimization($frameNumber) {
$this->tranParams[] = "/cgif/" . $frameNumber;
}
/**
* 输出为渐进式 jpg 格式。Mode 可为0或1。0:表示不开启渐进式;1:表示开启渐进式。该参数仅在输出图片格式为 jpg 格式时有效。如果输出非 jpg 图片格式,会忽略该参数,默认值0。
* @param $mode
*/
public function jpegInterlaceMode($mode) {
$this->tranParams[] = "/interlace/" . $mode;
}
/**
* 图片的绝对质量,取值范围0 - 100,默认值为原图质量;取原图质量和指定质量的最小值;<Quality>后面加“!”表示强制使用指定值,例如:90!。
* @param $value
* @param int $force
*/
public function quality($value, $force = 0) {
$temp = "/quality/" . $value;
if($force){
$temp .= "!";
}
$this->tranParams[] = $temp;
}
/**
* 图片的最低质量,取值范围0 - 100,设置结果图的质量参数最小值。
* 例如原图质量为85,将 lquality 设置为80后,处理结果图的图片质量为85。
* 例如原图质量为60,将 lquality 设置为80后,处理结果图的图片质量会被提升至80。
* @param $value
*/
public function lowestQuality($value) {
$this->tranParams[] = "/lquality/" . $value;
}
/**
* 图片的相对质量,取值范围0 - 100,数值以原图质量为标准。例如原图质量为80,将 rquality 设置为80后,得到处理结果图的图片质量为64(80x80%)。
* @param $value
*/
public function relativelyQuality($value) {
$this->tranParams[] = "/rquality/" . $value;
}
/**
* 高斯模糊
* @param $radius integer|float 模糊半径,取值范围为1 - 50
* @param $sigma integer|float 正态分布的标准差,必须大于0
*/
public function blur($radius, $sigma) {
$this->tranParams[] = "/blur/" . $radius . "x" . $sigma;
}
/**
* 图片亮度调节功能,value 为亮度参数值,取值范围为[-100, 100]的整数。
* 取值<0:降低图片亮度。
* 取值 = 0:不调整图片亮度。
* 取值>0:提高图片亮度。
* @param $value
*/
public function bright($value) {
$this->tranParams[] = "/bright/" . $value;
}
/**
* 图片对比度调节功能,value 为对比度参数值,取值范围为[-100, 100]的整数。
* 取值<0:降低图片对比度。
* 取值 = 0:不调整图片对比度。
* 取值>0:提高图片对比度。
* @param $value
*/
public function contrast($value) {
$this->tranParams[] = "/contrast/" . $value;
}
/**
* 图片锐化功能,value 为锐化参数值,取值范围为10 - 300间的整数(推荐使用70)。参数值越大,锐化效果越明显。
* @param $value
*/
public function sharpen($value) {
$this->tranParams[] = "/sharpen/" . $value;
}
/**
* 将图片设置为灰度图。 value 取值为0表示不改变图片。 value 取值为1表示将图片变为灰度图。
* @param $value
*/
public function grayscale($value) {
$this->tranParams[] = "/grayscale/" . $value;
}
/**
* 去除图片元信息,包括 exif 信息
*/
public function strip() {
$this->tranParams[] = "/strip";
}
/**
* 限制图片转换后的大小,支持以兆字节(m)和千字节(k)为单位
* 1. 仅支持 JPG 格式的图片,可以用于限制处理后图片的大小
* 2. 若在尾部加上!,表示用处理后的图片大小与原图大小做比较,如果处理后的图片比原图小,则返回处理后的图片,否则返回原图。例如:examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/picture.jpg?imageMogr2/size-limit/15k!
* 3. 建议搭配strip参数使用,去除图片的一些冗余信息,会有更好的效果。例如:examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/picture.jpg?imageMogr2/strip/format/png/size-limit/15k!
* @param $value
* @param int $compare
*/
public function sizeLimit($value, $compare = 0) {
$temp = "/size-limit/" . $value;
if($compare){
$temp .= "!";
}
$this->tranParams[] = $temp;
}
public function queryString() {
if($this->tranParams) {
$this->tranString = "imageMogr2" . implode("", $this->tranParams);
}
return $this->tranString;
}
public function resetRule() {
$this->tranString = "";
$this->tranParams = array();
}
}