67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package image
|
|
|
|
import (
|
|
"fmt"
|
|
"fusenapi/constants"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// 定义尺寸规则
|
|
var sizeArray = []uint32{1200, 1000, 750, 500, 128}
|
|
|
|
// 裁剪尺寸阶梯
|
|
var newSizeArray = []uint32{200, 400, 600, 800}
|
|
|
|
// 获取合适尺寸
|
|
func GetCurrentSize(clientSize uint32) uint32 {
|
|
lenNewSize := len(newSizeArray)
|
|
//大于最大尺寸则返回规则最大尺寸
|
|
if clientSize >= newSizeArray[lenNewSize-1] {
|
|
return newSizeArray[lenNewSize-1]
|
|
}
|
|
//小于最小尺寸则返回规则最小尺寸
|
|
if clientSize <= newSizeArray[0] {
|
|
return newSizeArray[0]
|
|
}
|
|
for _, v := range newSizeArray {
|
|
if v >= clientSize {
|
|
return v
|
|
}
|
|
}
|
|
return clientSize
|
|
}
|
|
|
|
// 千人前面图像拼接
|
|
type ThousandFaceImageFormatReq struct {
|
|
Size int
|
|
IsThousandFace int
|
|
Cover string
|
|
CoverImg string
|
|
CoverDefault string
|
|
ProductId int64
|
|
UserId int64
|
|
}
|
|
|
|
func ThousandFaceImageFormat(req *ThousandFaceImageFormatReq) {
|
|
if req.Size <= 0 {
|
|
return
|
|
}
|
|
coverSlice := strings.Split(req.Cover, ".")
|
|
coverImgSlice := strings.Split(req.CoverImg, ".")
|
|
if req.Size >= 200 && len(coverSlice) >= 2 && len(coverImgSlice) >= 2 {
|
|
req.Cover = fmt.Sprintf("%s_%d.%s", coverSlice[0], req.Size, coverSlice[1])
|
|
req.CoverImg = fmt.Sprintf("%s_%d.%s", coverImgSlice[0], req.Size, coverImgSlice[1])
|
|
}
|
|
if req.IsThousandFace == 0 {
|
|
return
|
|
}
|
|
//千人千面处理
|
|
req.Cover = ""
|
|
req.CoverDefault = req.CoverImg
|
|
if req.Size >= 200 && len(coverSlice) >= 2 && len(coverImgSlice) >= 2 {
|
|
req.CoverImg = fmt.Sprintf("%s/test/%d/%d_%d.png?%d", constants.DOMAIN_RENDER_IMG_NAME, req.UserId, req.UserId, req.ProductId, time.Now().Unix())
|
|
req.CoverDefault = fmt.Sprintf("%s_%d.%s", coverImgSlice[0], req.Size, coverImgSlice[1])
|
|
}
|
|
}
|