// a.FromPath("111.jpg").SetOutSize(800).Out(".")
type ImageSmall struct {
	file *os.File
	size uint
}

// 图片路径
func (class *ImageSmall) FromPath(strPath string) *ImageSmall {
	class.size = 800
	// 打开图像文件
	files, err := os.Open(strPath)
	if err != nil {
		log.Fatal(err)
	}
	class.file = files
	return class
}

// 调整图像 大小为默认宽度800，高度按比例缩放 输出名为 路径+时间.jpg
func (class *ImageSmall) SetOutSize(i uint) *ImageSmall {
	class.size = i
	return class
}

// 输出目录
func (class *ImageSmall) Out(outPath string) (string, error) {
	ou := outPath[len(outPath)-1:]
	if ou != "/" {
		outPath = outPath + "/"
	}
	defer class.file.Close()
	// 解码图像文件
	img, _, err := image.Decode(class.file)
	if err != nil {
		return "", errors.New(err.Error())
	}

	// 压缩图像并保存到新文件
	resizedImg := resize.Resize(class.size, 0, img, resize.Lanczos3) // 调整图像大小为宽度800，高度按比例缩放
	outAll := outPath + time.Now().Format("20060102150405") + ".jpg"
	out, err1 := os.Create(outAll)
	if err1 != nil {
		return "", errors.New(err1.Error())
	}
	defer out.Close()
	jpeg.Encode(out, resizedImg, nil)

	//fmt.Println("图像压缩完成！")
	return outAll, nil
}
