You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
5.3 KiB

9 months ago
package model
import "mime/multipart"
type CropParam struct {
X float64 `json:"x"`
Y float64 `json:"y"`
W float64 `json:"w"`
H float64 `json:"h"`
}
type ImageParams struct {
Format string `form:"format" json:"format" binding:"required" example:"压缩后的文件后缀,可选:jpg、png、gif、webp、heic" `
ProcessImageName string `form:"processImageName" json:"processImageName" example:"给压缩后的图片取名"`
ProcessImageSuffix string `form:"processImageSuffix" json:"processImageSuffix" example:"从原图文件名加后缀,如_q.webp 则生成xxx_q.webp的文件。当processImageName非空时忽略此参数"`
Crop *CropParam `form:"crop" json:"crop"` //图片裁剪,json格式字符串: {\"x\":0,\"y\":0,\"w\":100,\"h\":100} ,以 x,y为左上角的基点,按长宽裁剪。如果设置了ratio,height或width,则先裁剪再缩放(把裁剪后的图当成原图)
Ratio float32 `form:"ratio" json:"ratio" example:"0.9"` //缩放比例
Height uint `form:"height" json:"height"` //高
Width uint `form:"width" json:"width"` //宽
MaxHeight uint `form:"maxHeight" json:"maxHeight"` //当高超过x时,等比缩放至高=h.(height或width有值时忽略此参数)
MaxWidth uint `form:"maxWidth" json:"maxWidth"` //当宽超过x时,等比缩放至宽=h.(height或width或maxHeight有值时忽略此参数)
Reshape string `form:"reshape" json:"reshape" example:"高:宽,如4:3,16:9等,将原图裁剪取中间位置成固定比例的图片"`
ImageSize string `form:"imageSize" json:"imageSize" example:"压缩后的文件大小限制。可能会有偏差,如限制400k,结果生成405k"`
Quality uint `form:"quality" json:"quality"` //压缩质量1-101,数字越高质量越高文件越大,webp和heic建议=10,默认=0时无损压缩
Progressive bool `form:"progressive" json:"progressive"` //=true,渐进式。jpg、png、gif这三种图片可以设置为渐进式
}
type CompressImageRequest struct {
File *multipart.FileHeader `form:"file" swaggerignore:"true"`
ImageUrl string `form:"imageUrl" example:"图片url地址,file和imageUrl二选一"`
OverwriteOriginImage bool `form:"overwriteOriginImage"` //(有原图url时)用压缩后的图片覆盖源文件。默认=false。=true时忽略processImageBucket、processImageName、processImageSuffix等字段
OverwriteProcessImage bool `form:"overwriteProcessImage"` //对压缩图片有命名规则时,覆盖同名文件。默认=false
IgnoreOriginImage bool `form:"ignoreOriginImage"` //上传图片时,选择是否保存原图;如果有原图url,忽略此参数。默认=false,保存原图;=true时忽略原图
OriginImageName string `form:"originImageName" example:"给原始图片取名"`
ProcessImageBucket string `form:"processImageBucket" json:"processImageBucket" example:"转码后的图片所在空间。上传文件时默认为环境空间;有url时默认与源图片空间相同。"`
ImageParams
}
type CompressImagesRequest struct {
File *multipart.FileHeader `form:"file" swaggerignore:"true"`
ImageUrl string `form:"imageUrl" example:"图片url地址,file和imageUrl二选一"`
IgnoreOriginImage bool `form:"ignoreOriginImage"` //上传图片时,选择是否保存原图;如果有原图url,忽略此参数。默认=false,保存原图;=true时忽略原图
OriginImageName string `form:"originImageName" example:"给原始图片取名"`
ProcessParams string `form:"processParams" json:"processParams"` // 压缩图片参数
ProcessImageBucket string `form:"processImageBucket" json:"processImageBucket" example:"转码后的图片所在空间。上传文件时默认为环境空间;有url时默认与源图片空间相同。"`
}
type ImageCompressResponse struct {
OriginImageUrl string `json:"originImageUrl,omitempty" example:"原图地址"`
UploadFileName string `json:"uploadFileName,omitempty" example:"上传文件地址"`
OriginFileSize int `json:"originFileSize,omitempty"` //原文件大小
OriginWidth uint `json:"originWidth,omitempty"` //原图片宽度
OriginHeight uint `json:"originHeight,omitempty"` //原图片高度
ProcessImage map[string]string `json:"processImage,omitempty"` //处理后图片信息,url,width,height,fileSize
}
type ImagesCompressResponse struct {
OriginImageUrl string `json:"originImageUrl,omitempty" example:"原图地址"`
UploadFileName string `json:"uploadFileName,omitempty" example:"上传文件地址"`
OriginFileSize int `json:"originFileSize,omitempty"` //原文件大小
OriginWidth uint `json:"originWidth,omitempty"` //原图片宽度
OriginHeight uint `json:"originHeight,omitempty"` //原图片高度
ProcessImages []map[string]string `json:"processImages,omitempty"` //处理后图片信息,url,width,height,fileSize
}