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,默认值为原图质量;取原图质量和指定质量的最小值;后面加“!”表示强制使用指定值,例如: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(); } }