Home  >  Article  >  Backend Development  >  Golang image manipulation: how to adjust brightness and contrast

Golang image manipulation: how to adjust brightness and contrast

王林
王林Original
2023-08-19 16:53:111319browse

Golang image manipulation: how to adjust brightness and contrast

Golang Image Operation: How to Adjust Brightness and Contrast

Introduction:
In image processing, adjusting the brightness and contrast of an image is a very common task. By adjusting the brightness we can make the image brighter or darker. And by adjusting contrast, we can increase or decrease the color differences in an image. This article will introduce how to use Golang to adjust the brightness and contrast of images and provide code examples.

  1. Import the necessary packages
    First, we need to import the image and color packages, which are used to handle the reading and saving of images, as well as color space conversion.
import (
    "image"
    "image/color"
    _ "image/jpeg"
    _ "image/png"
    "os"
)
  1. Read image file
    Next, we need to implement a function that reads the image file and returns the image.Image object.
func loadImage(path string) (image.Image, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    img, _, err := image.Decode(file)
    if err != nil {
        return nil, err
    }

    return img, nil
}
  1. Adjust Brightness
    Brightness is the intensity or brightness level of image pixels. By adjusting the RGB component of each pixel, we can increase or decrease the brightness of the image. Below is an example function for adjusting the brightness of an image.
func adjustBrightness(img image.Image, level int) image.Image {
    bounds := img.Bounds()
    dest := image.NewRGBA(bounds)

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            oldColor := img.At(x, y)
            r, g, b, a := oldColor.RGBA()

            r = uint32((int(r) * level) / 100)
            g = uint32((int(g) * level) / 100)
            b = uint32((int(b) * level) / 100)

            newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)}

            dest.Set(x, y, newColor)
        }
    }

    return dest
}

In the above code, we use a loop to iterate through each pixel in the image and adjust the RGB component of each pixel according to the given brightness level.

  1. Adjust Contrast
    Contrast determines the degree of difference between different colors in an image. By adjusting the RGB component of each pixel, we can increase or decrease the contrast of the image. Below is an example function for adjusting the contrast of an image.
func adjustContrast(img image.Image, level int) image.Image {
    bounds := img.Bounds()
    dest := image.NewRGBA(bounds)

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            oldColor := img.At(x, y)
            r, g, b, a := oldColor.RGBA()

            r = uint32(128 + (int(r)-128)*level/100)
            g = uint32(128 + (int(g)-128)*level/100)
            b = uint32(128 + (int(b)-128)*level/100)

            newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)}

            dest.Set(x, y, newColor)
        }
    }

    return dest
}

In the above code, we use a loop to iterate through each pixel in the image and adjust the RGB component of each pixel according to the given contrast level.

  1. Example
    Finally, we can use the above functions to adjust the brightness and contrast of the image.
func main() {
    img, err := loadImage("input.jpg")
    if err != nil {
        fmt.Println("Failed to load image:", err)
        return
    }

    brightImg := adjustBrightness(img, 150)
    contrastImg := adjustContrast(img, 200)

    saveImage(brightImg, "bright_output.jpg")
    saveImage(contrastImg, "contrast_output.jpg")
}

In the above code, we first use the loadImage function to load the input image, and then call the adjustBrightness and adjustContrast functions respectively to adjust the brightness and contrast of the image. Finally, we use the saveImage function to save the adjusted image to a file.

Summary:
This article introduces how to use Golang to adjust image brightness and contrast, and provides corresponding code examples. By adjusting the brightness and contrast, we can improve the visual effect of the image and apply more techniques in image processing. By using Golang's image processing library, we can easily implement these tasks and apply them in our own projects.

The above is the detailed content of Golang image manipulation: how to adjust brightness and contrast. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn