code-origin/server/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageMogrTemplate.php

375 lines
13 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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或10代表不使用 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;
}
/**
* 格式转换目标缩略图的图片格式可为jpgbmpgifpngwebpyjpeg 等,其中 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后得到处理结果图的图片质量为6480x80%)。
* @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();
}
}