
Golang图片操作:如何调整亮度和对比度
引言:
在图像处理中,调整图像的亮度和对比度是非常常见的任务。通过调整亮度,我们可以使图像变得更明亮或更暗。而通过调整对比度,我们可以增加或减少图像中的色彩差异。本文将介绍如何使用Golang对图像进行亮度和对比度的调整,并提供代码示例。
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
}在上面的代码中,我们使用一个循环来迭代图像中的每个像素,并根据给定的亮度级别来调整每个像素的RGB分量。
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
}在上面的代码中,我们使用一个循环来迭代图像中的每个像素,并根据给定的对比度级别来调整每个像素的RGB分量。
立即学习“go语言免费学习笔记(深入)”;
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")
}在上面的代码中,我们首先使用loadImage函数加载输入图像,然后分别调用adjustBrightness和adjustContrast函数来调整图像的亮度和对比度。最后,我们使用saveImage函数将调整后的图像保存到文件中。
总结:
本文介绍了使用Golang调整图像亮度和对比度的方法,并提供了相应的代码示例。通过调整亮度和对比度,我们可以改善图像的视觉效果,并在图像处理中应用更多的技术。通过借助Golang的图像处理库,我们可以轻松地实现这些任务,并在自己的项目中应用。
以上就是Golang图片操作:如何调整亮度和对比度的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号