Golang 图片裁剪:使用标准库裁剪图片
在 Go 语言中,可以使用标准库中的 image 和 image/draw 包来裁剪图片。
首先,需要将图片读入内存中:
file, err := os.Open('input.jpg')
if err != nil {
log.Fatal(err)
}
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
接下来,可以使用 image.NewRGBA() 方法创建一个新的 RGBA 图像,然后使用 image/draw 包中的 Draw() 方法将原始图片的一部分复制到新的图像上:
rect := image.Rect(100, 100, 200, 200) // 裁剪区域
dst := image.NewRGBA(rect)
draw.Draw(dst, dst.Bounds(), img, rect.Min, draw.Src)
最后,可以将新图像保存到文件中:
out, err := os.Create('output.jpg')
if err != nil {
log.Fatal(err)
}
defer out.Close()
jpeg.Encode(out, dst, nil)
完整代码示例:
package main
import (
"image"
"image/draw"
"image/jpeg"
"log"
"os"
)
func main() {
file, err := os.Open('input.jpg')
if err != nil {
log.Fatal(err)
}
defer file.Close()
img, _, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
rect := image.Rect(100, 100, 200, 200) // 裁剪区域
dst := image.NewRGBA(rect)
draw.Draw(dst, dst.Bounds(), img, rect.Min, draw.Src)
out, err := os.Create('output.jpg')
if err != nil {
log.Fatal(err)
}
defer out.Close()
jpeg.Encode(out, dst, nil)
}
原文地址: http://www.cveoy.top/t/topic/nQlx 著作权归作者所有。请勿转载和采集!