ホームページ >バックエンド開発 >Golang >Golang の画像操作: 明るさとコントラストを調整する方法

Golang の画像操作: 明るさとコントラストを調整する方法

王林
王林オリジナル
2023-08-19 16:53:111380ブラウズ

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. 最後に、上記の関数を使用して画像の明るさとコントラストを調整できます。
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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。