go图片压缩
依赖第三方库 https://github.com/nfnt/resize
依赖go语言的图片处理库image https://golang.org/pkg/image/#Alpha.SubImage
https://wizardforcel.gitbooks.io/golang-stdlib-ref/content/68.html#Image
安装
$ go get github.com/nfnt/resize
导入
import "github.com/nfnt/resize"
使用
例子
package main
import (
	"github.com/nfnt/resize"
	"image/jpeg"
	"log"
	"os"
)
func main() {
	// open "test.jpg"
	file, err := os.Open("test.jpg")
	if err != nil {
		log.Fatal(err)
	}
	// decode jpeg into image.Image
	img, err := jpeg.Decode(file)
	if err != nil {
		log.Fatal(err)
	}
	file.Close()
	// resize to width 1000 using Lanczos resampling
	// and preserve aspect ratio
	m := resize.Resize(1000, 0, img, resize.Lanczos3)
	out, err := os.Create("test_resized.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer out.Close()
	// write new image to file
	jpeg.Encode(out, m, nil)
}
使用记录
1. 需要image库支持图片的解码和编码
2. jpeg、jpg、png格式是支持的,其他图片格式没用过
3. 压缩后的图片会被写入一个io.writer,有两种方法:
1)在本地create一个图片文件,将压缩后的图片写入(示例中的方法)
2)声明一个io.writer的实例来承接压缩后的图片数据
var shrinkImage &bytes.Buffer{}
shrinkImage.Reset()
4. 当时应用的时候需要将io.writer中的压缩图片数据作为io.reader上传,bytes.Buffer也是io.reader的实现,直接传入
shrinkUrl, err := util.UploadInner(domain, true, shrinkRealFileName, int64(shrinkFileSize), shrinkFileWriter)
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号