add resize func

This commit is contained in:
Havoc412 2024-10-20 11:50:26 +08:00
parent 20962f00b6
commit c02455d509
2 changed files with 59 additions and 0 deletions

View File

@ -1,6 +1,9 @@
package web
import (
"catface/app/global/variable"
"catface/app/http/validator/core/data_transfer"
"github.com/gin-gonic/gin"
)
@ -9,7 +12,12 @@ type Encounters struct {
func (e *Encounters) Create(context *gin.Context) {
// TODO 处理 Photos 文件,然后处理出 Avatar并获取压缩后的 宽高,以及文件的存储路径。
photos := data_transfer.GetStringSlice(context, "photos")
if len(photos) > 0 {
avatar := photos[0]
avatarWidth := variable.ConfigYml.GetFloat64("FileUploadSetting.AvatarWidth")
}
// Real Insert
// if model.CreateEncounterFactory("").InsertDate(context) {
// response.Success(context, consts.CurdStatusOkMsg, "")

View File

@ -1 +1,52 @@
package upload_file
import (
"image"
"image/jpeg"
"os"
)
// ResizeImage 按照指定宽度等比例缩放图片
func ResizeImage(srcPath string, dstPath string, targetWidth int) error {
// 打开源图片文件
srcFile, err := os.Open(srcPath)
if err != nil {
return err
}
defer srcFile.Close()
// 解码源图片
srcImg, _, err := image.Decode(srcFile)
if err != nil {
return err
}
// 获取源图片的尺寸
bounds := srcImg.Bounds()
srcWidth := bounds.Dx()
srcHeight := bounds.Dy()
// 计算目标高度
targetHeight := int(float64(srcHeight) * (float64(targetWidth) / float64(srcWidth)))
// 创建目标图片
dstImg := image.NewRGBA(image.Rect(0, 0, targetWidth, targetHeight))
// 使用高质量的滤波算法进行缩放
draw.CatmullRom.Scale(dstImg, dstImg.Bounds(), srcImg, srcImg.Bounds(), draw.Over, nil)
// 打开目标图片文件
dstFile, err := os.Create(dstPath)
if err != nil {
return err
}
defer dstFile.Close()
// 编码并保存目标图片
err = jpeg.Encode(dstFile, dstImg, nil)
if err != nil {
return err
}
return nil
}