Skip to content

Commit

Permalink
头像、横幅、封面裁剪处理
Browse files Browse the repository at this point in the history
  • Loading branch information
TruthHun88 committed Feb 23, 2019
1 parent 0f2918c commit fb2ea08
Show file tree
Hide file tree
Showing 18 changed files with 2,239 additions and 39 deletions.
63 changes: 42 additions & 21 deletions controllers/AdminControllers/BannerController.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,32 +33,53 @@ func (this *BannerController) Get() {
//新增横幅
func (this *BannerController) Add() {
f, h, err := this.GetFile("Picture")
if err == nil {
defer f.Close()
dir := "uploads/" + time.Now().Format("2006-01-02")
os.MkdirAll(dir, 0777)
ext := helper.GetSuffix(h.Filename, ".")
filepath := dir + "/" + helper.MyMD5(fmt.Sprintf("%v-%v", h.Filename, time.Now().Unix())) + "." + ext
err = this.SaveToFile("Picture", filepath) // 保存位置
if err == nil {
if md5str, err := helper.FileMd5(filepath); err == nil {
save := md5str + "." + ext
err = models.NewOss().MoveToOss(filepath, save, true, true)
if err == nil {
var banner models.Banner
this.ParseForm(&banner)
banner.Picture = save
banner.TimeCreate = int(time.Now().Unix())
banner.Status = true
_, err = orm.NewOrm().Insert(&banner)
}
}
}
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, err.Error())
}
defer f.Close()

dir := "uploads/" + time.Now().Format("2006-01-02")
os.MkdirAll(dir, 0777)
ext := helper.GetSuffix(h.Filename, ".")
filePath := dir + "/" + helper.MyMD5(fmt.Sprintf("%v-%v", h.Filename, time.Now().Unix())) + "." + ext

if err = helper.CropImage(filePath, helper.BannerWidth, helper.BannerHeight); err != nil {
helper.Logger.Error("横幅裁剪失败:%v", err.Error())
this.ResponseJson(false, err.Error())
}

err = this.SaveToFile("Picture", filePath) // 保存位置
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, err.Error())
}

var md5str string
md5str, err = helper.FileMd5(filePath)
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, err.Error())
}

save := md5str + "." + ext
err = models.NewOss().MoveToOss(filePath, save, true, true)
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, err.Error())
}

var banner models.Banner
this.ParseForm(&banner)
banner.Picture = save
banner.TimeCreate = int(time.Now().Unix())
banner.Status = true
_, err = orm.NewOrm().Insert(&banner)
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, err.Error())
}

this.ResponseJson(true, "横幅添加成功")
}

Expand Down
35 changes: 26 additions & 9 deletions controllers/HomeControllers/UserController.go
Original file line number Diff line number Diff line change
Expand Up @@ -475,16 +475,27 @@ func (this *UserController) CreateCollectFolder() {
dir := fmt.Sprintf("./uploads/%v/%v/", time.Now().Format("2006-01-02"), this.IsLogin)
os.MkdirAll(dir, 0777)
file := helper.MyMD5(fmt.Sprintf("%v-%v-%v", timestamp, this.IsLogin, fh.Filename)) + "." + ext
err = this.SaveToFile("Cover", dir+file)
if err == nil {
//将图片移动到OSS
err = models.NewOss().MoveToOss(dir+file, file, true, true)
helper.Logger.Debug(dir + file)
if err != nil {
helper.Logger.Error(err.Error())
}
cover = file

tmpFile := dir + file

err = this.SaveToFile("Cover", tmpFile)
if err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, "封面保存失败")
}

if err = helper.CropImage(tmpFile, helper.CoverWidth, helper.CoverHeight); err != nil {
helper.Logger.Error(err.Error())
this.ResponseJson(false, "封面裁剪失败")
}

//将图片移动到OSS
err = models.NewOss().MoveToOss(tmpFile, file, true, true)
helper.Logger.Debug(tmpFile)
if err != nil {
helper.Logger.Error(err.Error())
}
cover = file
}

// 收藏夹
Expand Down Expand Up @@ -743,6 +754,12 @@ func (this *UserController) Avatar() {
helper.Logger.Error("用户(%v)头像保存失败:%v", this.IsLogin, err.Error())
this.ResponseJson(false, "头像文件保存失败")
}

//头像裁剪
if err = helper.CropImage(tmpFile, helper.AvatarWidth, helper.AvatarHeight); err != nil {
helper.Logger.Error("图片裁剪失败:%v", err.Error())
}

err = models.NewOss().MoveToOss(tmpFile, saveFile, true, true)
if err != nil {
helper.Logger.Error(err.Error())
Expand Down
8 changes: 8 additions & 0 deletions helper/define.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,12 @@ var (

//允许上传的文档扩展名
AllowedUploadExt = ",doc,docx,rtf,wps,odt,ppt,pptx,pps,ppsx,dps,odp,pot,xls,xlsx,et,ods,txt,pdf,chm,epub,umd,mobi,"

// 图片尺寸
CoverWidth = beego.AppConfig.DefaultInt("cover_width", 140)
CoverHeight = beego.AppConfig.DefaultInt("cover_height", 200)
BannerWidth = beego.AppConfig.DefaultInt("banner_width", 825)
BannerHeight = beego.AppConfig.DefaultInt("banner_height", 316)
AvatarWidth = beego.AppConfig.DefaultInt("avatar_width", 120)
AvatarHeight = beego.AppConfig.DefaultInt("avatar_height", 120)
)
31 changes: 31 additions & 0 deletions helper/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"encoding/hex"
"fmt"
"html/template"
"image"
"math/rand"

"crypto/md5"
Expand Down Expand Up @@ -37,6 +38,7 @@ import (
"github.com/TruthHun/DocHub/helper/crawl"
"github.com/astaxie/beego"
"github.com/astaxie/beego/cache"
"github.com/disintegration/imaging"
"github.com/huichen/sego"
"rsc.io/pdf"
)
Expand Down Expand Up @@ -756,6 +758,7 @@ func DownFile(fileUrl, savePath string, cookies string) (md5str, localFile, file
if err != nil {
return
}
defer resp.Body.Close()
if resp.StatusCode >= 300 {
err = errors.New(fmt.Sprintf("HTTP响应头错误:%v。文件下载地址:%v", resp.Status, fileUrl))
return
Expand Down Expand Up @@ -858,3 +861,31 @@ func SvgoCompress(input, output string) (err error) {
args := []string{input, "-o", output}
return exec.Command(svgo, args...).Run()
}

// 图片缩放居中裁剪
//@param file 图片文件
//@param width 图片宽度
//@param height 图片高度
//@return err 错误

//图片缩放居中裁剪
//@param file 图片文件
//@param width 图片宽度
//@param height 图片高度
//@return err 错误
func CropImage(file string, width, height int) (err error) {
var img image.Image
img, err = imaging.Open(file)
if err != nil {
return
}
ext := strings.ToLower(filepath.Ext(file))
switch ext {
case ".jpeg", ".jpg", ".png", ".gif":
img = imaging.Fill(img, width, height, imaging.Center, imaging.Linear)
default:
err = errors.New("unsupported image format")
return
}
return imaging.Save(img, file)
}
3 changes: 3 additions & 0 deletions models/Models.go
Original file line number Diff line number Diff line change
Expand Up @@ -515,6 +515,9 @@ func Pdf2Svg(file string, totalPage int, md5str string) (err error) {
if num == 1 {
//封面处理
if cover, err := helper.ConvertToJpeg(svgfile, false); err == nil {
if err = helper.CropImage(cover, helper.CoverWidth, helper.CoverHeight); err != nil {
helper.Logger.Error("文档封面裁剪失败:%v", err.Error())
}
NewOss().MoveToOss(cover, md5str+".jpg", true, true)
}
//获取svg的宽高(pt)
Expand Down
1 change: 1 addition & 0 deletions models/RecycleModel.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ func (this *DocumentRecycle) RemoveToRecycle(uid interface{}, self bool, ids ...
//3、用户文档数量减少
//4、整站文档数量减少
//5、分类下的文档减少
//TODO: 文档的上传用户,积分减少
//不需要删除用户的收藏记录
//不需要删除文档的评分记录

Expand Down
21 changes: 21 additions & 0 deletions vendor/github.com/disintegration/imaging/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit fb2ea08

Please sign in to comment.