云起工作室 15711107967
08_图片上传
2025-02-06 10:38:01
1、获取图片长宽
import(
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
)
src,err:=file.Open()

img,ext,err:=image.DecodeConfig(src)
fmt.Println("width:",img.Width)
fmt.Println("height",img.Height)
fmt.Println("后缀",ext) //不包含.
2、获取图片类型
安装

go get github.com/shamsher31/goimgtype


// 图片路径

    var file_name string = `./test.png`

    // 读取图片

    old_file, err1 := os.Open(file_name)

    if err1 != nil {

        panic(err)

    }

    defer old_file.Close()


    // 获取图片的类型

    datatype, err2 := imgtype.Get(file_name)

    if err2 != nil {

        println(`不是图片文件`)

    } else {

        // 根据文件类型执行响应的操作

        switch datatype {

        case `image/jpeg`:

            println(`这是JPG文件`)

        case `image/png`:

            println(`这是PNG文件`)

        }

    } 

七牛云上传
type MyPutRet struct {
   Key    string
   Hash   string
   Fsize  int
   Bucket string
   Name   string
}
func upQiniu(file *multipart.FileHeader, ctx *gin.Context) {
   putPolicy := storage.PutPolicy{
      Scope: Conf.Qiniu.Bucket,
   }
   src, err := file.Open()
   if err != nil {
      return
   }
 

   img, ext, err := image.DecodeConfig(src)
   if err != nil {
      return
   }
   name1 := time.Now().Format("20060102150405")
   name2 := rand.Intn(1000)
   name := name1 + strconv.Itoa(name2) + "." + ext
   fmt.Println("name:", "upload/"+name)
   fmt.Printf("===a=w= %d= %d", img.Width, img.Height)

   src.Close()

   src, err = file.Open()
   if err != nil {
      return
   }
   defer src.Close()

   mac := qbox.NewMac(Conf.Qiniu.AccessKey, Conf.Qiniu.SecretKey)

   upToken := putPolicy.UploadToken(mac)
   fmt.Println("result===b")
   cfg := storage.Config{}
   formUploader := storage.NewFormUploader(&cfg)
   ret := MyPutRet{}
   putExtra := storage.PutExtra{}

   err = formUploader.Put(ctx, &ret, upToken, "upload/"+name, src, file.Size, &putExtra)
   if err != nil {
      fmt.Println(err)
      return
   }
   
   fmt.Println("ret.Key:", ret.Key)
}