https://github.com/nfnt/resize
图片裁剪
func ImageResize() {
file, err := os.Open("test-1.png")
if err != nil {
log.Fatal(err)
}
// decode jpeg into image.Image
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
file.Close()
// resize to width 1000 using Lanczos resampling
// and preserve aspect ratio
kuan := img.Bounds().Dx() //
gao := img.Bounds().Dy() //
fmt.Println(kuan)
fmt.Println(gao)
m := resize.Resize(200, 0, img, resize.Lanczos3)
//m := resize.Resize(1000, 0, img, resize.Lanczos3)
out, err := os.Create("output-1.jpg")
if err != nil {
log.Fatal(err)
}
defer out.Close()
// write new image to file
jpeg.Encode(out, m, nil)
fmt.Println("------------------")
}
[]byte 缩略
func ImageResize(ctx *gin.Context, imgByte []byte, percent uint, weight, height int) (b []byte, err error) {
img, _, err := image.Decode(bytes.NewReader(imgByte))
if err != nil {
return
}
w := uint(weight) * percent
h := uint(height) * percent
resized := resize.Resize(w, h, img, resize.Lanczos3)
buf := new(bytes.Buffer)
if err = jpeg.Encode(buf, resized, nil); err != nil {
return
}
return buf.Bytes(), nil
}
该博客介绍了如何在Go语言中实现图片的裁剪和缩放操作,包括读取图片文件,使用Lanczos3算法保持比例缩放至指定宽度,并将处理后的图片保存为新的文件。同时,还提供了一个函数用于处理字节流中的图片,支持按百分比缩放并输出为JPEG格式。
1万+

被折叠的 条评论
为什么被折叠?



