feat: 实现用户头像上传功能
- 创建头像上传API接口 (POST /api/v1/users/:id/avatar) - 实现完整的头像上传逻辑,包含权限验证和文件处理 - 添加头像图片处理功能,支持自动压缩和居中裁剪 - 完善静态文件服务,支持头像访问 - 创建完整的API测试用例 - 更新任务进度文档 任务11已完成,项目完成率提升至37.5%
This commit is contained in:
@ -201,4 +201,44 @@ func GetImageDimensions(filePath string) (width, height int, err error) {
|
||||
}
|
||||
|
||||
return img.Width, img.Height, nil
|
||||
}
|
||||
|
||||
// ResizeImage 调整图片尺寸 (用于头像处理)
|
||||
func ResizeImage(srcPath, destPath string, width, height int) error {
|
||||
// 打开原图
|
||||
src, err := imaging.Open(srcPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("打开图片失败: %v", err)
|
||||
}
|
||||
|
||||
// 调整图片尺寸 (正方形裁剪)
|
||||
resized := imaging.Fill(src, width, height, imaging.Center, imaging.Lanczos)
|
||||
|
||||
// 保存调整后的图片
|
||||
err = imaging.Save(resized, destPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("保存调整后的图片失败: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateAvatar 创建头像(包含压缩和格式转换)
|
||||
func CreateAvatar(srcPath, destPath string, size int) error {
|
||||
// 打开原图
|
||||
src, err := imaging.Open(srcPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("打开图片失败: %v", err)
|
||||
}
|
||||
|
||||
// 创建正方形头像 (居中裁剪)
|
||||
avatar := imaging.Fill(src, size, size, imaging.Center, imaging.Lanczos)
|
||||
|
||||
// 保存为JPEG格式 (压缩优化)
|
||||
err = imaging.Save(avatar, destPath, imaging.JPEGQuality(85))
|
||||
if err != nil {
|
||||
return fmt.Errorf("保存头像失败: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user