发布时间:2024-12-23 06:16:04
示例代码:
```go file, err := os.Open("image.jpg") if err != nil { fmt.Println("无法打开图像文件:", err) return } defer file.Close() img, _, err := image.Decode(file) if err != nil { fmt.Println("无法解码图像文件:", err) return } ```1. 调整尺寸
我们可以使用`resize`包来调整图像的尺寸。该包提供了`Resize`函数,它接受一个`image.Image`对象和目标尺寸,并返回一个缩放后的图像。示例代码:
```go resized := resize.Resize(800, 0, img, resize.Lanczos3) ```2. 调整亮度
要调整图像的亮度,我们可以遍历每个像素,并修改其RGB值。以下是一个简单的函数,用于增加图像的亮度:示例代码:
```go func adjustBrightness(img image.Image, delta int) image.Image { width := img.Bounds().Size().X height := img.Bounds().Size().Y for x := 0; x < width; x++ { for y := 0; y < height; y++ { r, g, b, a := img.At(x, y).RGBA() r = clamp(uint32(r) + uint32(delta)) g = clamp(uint32(g) + uint32(delta)) b = clamp(uint32(b) + uint32(delta)) img.Set(x, y, color.RGBA{uint8(r >> 8), uint8(g >> 8), uint8(b >> 8), uint8(a >> 8)}) } } return img } ```3. 添加滤镜
我们可以使用`gocv`包来添加滤镜到图像上。该包提供了各种图像处理函数,例如灰度化、边缘检测和模糊等。示例代码:
```go imgMat, err := gocv.ImageToMatRGB(img) if err != nil { fmt.Println("无法转换图像:", err) return } gray := gocv.NewMat() gocv.CvtColor(imgMat, &gray, gocv.ColorRGBToGray) blurred := gocv.NewMat() gocv.GaussianBlur(gray, &blurred, image.Pt(5, 5), 0, 0, gocv.BorderDefault) ```示例代码:
```go output, err := os.Create("output.jpg") if err != nil { fmt.Println("无法创建输出文件:", err) return } defer output.Close() jpeg.Encode(output, resized, nil) ```