123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- <?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();
- }
- }
|