Home > Article > Backend Development > 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.
import ( "image" "image/color" _ "image/jpeg" _ "image/png" "os" )
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 }
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.
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.
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!