在Go語言中,可以使用第三方庫來實現圖片處理。以下是一些常用的庫和示例代碼,用于實現基本的圖片處理功能。
package main
import (
"image/jpeg"
"os"
"github.com/nfnt/resize"
)
func main() {
file, err := os.Open("input.jpg")
if err != nil {
panic(err)
}
defer file.Close()
img, err := jpeg.Decode(file)
if err != nil {
panic(err)
}
newImg := resize.Resize(100, 0, img, resize.Lanczos3)
out, err := os.Create("output.jpg")
if err != nil {
panic(err)
}
defer out.Close()
jpeg.Encode(out, newImg, &jpeg.Options{Quality: 80})
}
package main
import (
"image"
"image/jpeg"
"os"
"github.com/nfnt/resize"
)
func main() {
file, err := os.Open("input.jpg")
if err != nil {
panic(err)
}
defer file.Close()
img, err := jpeg.Decode(file)
if err != nil {
panic(err)
}
croppedImg := image.NewRGBA(image.Rect(50, 50, 200, 200))
draw.FloydSteinberg.Draw(croppedImg, croppedImg.Bounds(), img, image.Point{}, draw.Src)
out, err := os.Create("output.jpg")
if err != nil {
panic(err)
}
defer out.Close()
jpeg.Encode(out, croppedImg, &jpeg.Options{Quality: 80})
}
package main
import (
"image/jpeg"
"os"
"github.com/nfnt/resize"
)
func main() {
file, err := os.Open("input.jpg")
if err != nil {
panic(err)
}
defer file.Close()
img, err := jpeg.Decode(file)
if err != nil {
panic(err)
}
rotatedImg := rotate.Rotate90(img)
out, err := os.Create("output.jpg")
if err != nil {
panic(err)
}
defer out.Close()
jpeg.Encode(out, rotatedImg, &jpeg.Options{Quality: 80})
}
這些示例代碼使用了github.com/nfnt/resize
庫來實現圖片縮放、裁剪和旋轉功能。要使用這些庫,請先使用go get
命令安裝它們:
go get github.com/nfnt/resize
go get github.com/disintegration/imaging
此外,Go語言的標準庫image
包還提供了許多其他圖片處理功能,如顏色轉換、濾鏡應用等。你可以查閱官方文檔以獲取更多信息:https://pkg.go.dev/image
如果你需要實現更復雜的圖片處理功能,可以考慮使用其他第三方庫,如github.com/fogleman/gg
(支持2D圖形操作)或golang.org/x/image
(提供更多圖像處理功能)。