GoLang缩略图+beego项目
来源:互联网 发布:跳跃网络充值 编辑:程序博客网 时间:2024/05/16 11:49
import ( "Server_sevenstudio/controllers" "github.com/astaxie/beego" "mime/multipart" "os" "time" "strconv" "strings" "math/rand" "crypto/md5" "encoding/hex" "regexp" "image" "code.google.com/p/graphics-go/graphics" _"image/jpeg" "image/png" "fmt")
f,h,err_img := this.GetFile("avatar")if err_img == nil{ //定义原图,中图,大图路径 var filepath = "" var filepath_m = "" var filepath_s = "" //定义图片的name属性 var par_name = "avatar" err,filepath,filepath_m,filepath_s = this.SaveFile(f,h,par_name)
....
//上传图片,返回值为原图及缩略图路径func (this *BaseApiController) SaveFile(f multipart.File,h *multipart.FileHeader,par_name string)(err error,l string,m string,s string){ defer f.Close() now := time.Now() upload_path := beego.AppConfig.String("uploadpath") dir := upload_path+ strconv.Itoa(now.Year()) + "-" + strconv.Itoa(int(now.Month())) + "/" + strconv.Itoa(now.Day()) dirf := strconv.Itoa(now.Year()) + "-" + strconv.Itoa(int(now.Month())) + "/" + strconv.Itoa(now.Day())+ "/" err = os.MkdirAll(dir, 0755) if err != nil { return } filename := h.Filename newname := this.FormatFileName(filename) imgpath := dir+"/"+newname err = this.SaveToFile(par_name, imgpath) if err != nil{ return }else { image,_ := beego.AppConfig.GetSection("image") width_m,_ := strconv.Atoi(image["width_m"]) width_s,_ := strconv.Atoi(image["width_s"]) height_m,_ := strconv.Atoi(image["height_m"]) height_s,_ := strconv.Atoi(image["height_s"]) err = MakeMilThumb(imgpath,width_m,height_m) err = MakeSmallThumb(imgpath,width_s,height_s) if err != nil { return }else { l = dirf+newname m = dirf+strings.Replace(newname, "_l.", "_m.",1) s = dirf+strings.Replace(newname, "_l.", "_s.",1) return err,l,m,s } }}//middle imagefunc MakeMilThumb(orgpath string,width int,height int) error { src, err := LoadImage(orgpath) if err != nil { return err } dst := image.NewRGBA(image.Rect(0, 0, width, height)) err = graphics.Scale(dst, src) //缩小图片 if err != nil { return err } filepath_m := strings.Replace(orgpath, "_l.", "_m.",1) err = SaveImage(filepath_m, dst) return err}//small imagefunc MakeSmallThumb(orgpath string,width int,height int) error { src, err := LoadImage(orgpath) if err != nil { return err } dst := image.NewRGBA(image.Rect(0, 0, width, height)) err = graphics.Scale(dst, src) //缩小图片 if err != nil { return err } filepath_s := strings.Replace(orgpath, "_l.", "_s.",1) err = SaveImage(filepath_s, dst) return err}//读取文件func LoadImage(path string) (img image.Image, err error) { file, err := os.Open(path) if err != nil { return } defer file.Close() img, _, err = image.Decode(file) //解码图片 fmt.Println(err) return}//保存文件func SaveImage(path string, img image.Image) (err error) { imgfile, err := os.Create(path) defer imgfile.Close() err = png.Encode(imgfile, img) //编码图片 return}//重新生成文件名func (this *BaseApiController)FormatFileName(filename string) string { filepath := strings.Split(filename, ".") t := time.Now().UnixNano() rndNum := rand.Int63() t1 := this.Md5(strconv.FormatInt(t,10)+strconv.FormatInt(rndNum,10)) newname := t1+"_l."+filepath[1] return newname}
0 0
- GoLang缩略图+beego项目
- Golang Web 框架 Beego 创建项目
- golang(beego) 发送邮件
- Centos 安装golang beego
- golang、beego初探
- golang-beego的使用
- golang: beego自动化部署
- [golang]beego列表分页
- GOLANG BEEGO ORM
- golang缩略图
- golang(beego)验证码控制器
- 搭建golang的beego注意事项
- golang beego框架使用有感
- golang beego 路由个人理解
- beego项目运行过程
- golang(2):beego 环境搭建
- linux安装golang 以及beego框架
- ubnutu下golang安装Beego框架
- Android 解决scrollview中嵌套listview、GridView显示不完全问题
- package name deja-dup-backend-gvfs could not be resolved
- CSS背景属性
- 用gson得JSON,数值变为double类型 ,去掉double值中的小数位(3.0改为3)
- 结构体大小的计算
- GoLang缩略图+beego项目
- Android 窗口的计算过程
- CSS系列:CSS3新增选择器
- 类的成员变量和实例变量
- 更多随机性还是更少
- Java 日期字符串YYYYMMDDHHMISS 格式化为自然语言日期(xxxx年xx月xx日xx时xx分)
- 【个人笔记重点,不作为参考】主题:npm用法及离线方法
- idea创建多项目是依赖包无法识别问题
- Ubuntu 16.10下安装scikit-learn 0.18.1