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 }