>  기사  >  백엔드 개발  >  Golang 이미지 조작: 밝기와 대비를 조정하는 방법

Golang 이미지 조작: 밝기와 대비를 조정하는 방법

王林
王林원래의
2023-08-19 16:53:111324검색

Golang 이미지 조작: 밝기와 대비를 조정하는 방법

Golang 이미지 조작: 밝기와 대비를 조정하는 방법

소개:
이미지 처리에서 이미지의 밝기와 대비를 조정하는 것은 매우 일반적인 작업입니다. 밝기를 조정하여 이미지를 더 밝게 또는 더 어둡게 만들 수 있습니다. 그리고 대비를 조정하여 이미지의 색상 차이를 늘리거나 줄일 수 있습니다. 이 글에서는 Golang을 사용하여 이미지의 밝기와 대비를 조정하는 방법을 소개하고 코드 예제를 제공합니다.

  1. 필요한 패키지 가져오기
    먼저 이미지 읽기 및 저장은 물론 색상 공간 변환을 처리하는 데 사용되는 이미지 및 색상 패키지를 가져와야 합니다.
import (
    "image"
    "image/color"
    _ "image/jpeg"
    _ "image/png"
    "os"
)
  1. 이미지 파일 읽기
    다음으로, 이미지 파일을 읽고 image.Image 객체를 반환하는 함수를 구현해야 합니다.
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. 밝기 조정
    밝기는 이미지 픽셀의 강도 또는 밝기 수준입니다. 각 픽셀의 RGB 구성 요소를 조정하여 이미지의 밝기를 높이거나 낮출 수 있습니다. 다음은 이미지의 밝기를 조정하는 함수의 예입니다.
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 구성 요소를 조정합니다.

  1. 대비 조정
    대비는 이미지의 다양한 색상 간의 차이 정도를 결정합니다. 각 픽셀의 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 구성 요소를 조정합니다.

  1. Example
    마지막으로 위 기능을 사용하여 이미지의 밝기와 대비를 조정할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.