Golang 画像処理: 画像のカラー グラデーションとグレースケール マッピングを実行する方法
はじめに: デジタル メディアの発展に伴い、画像処理は私たちのシステムに不可欠な部分になりました。日常生活の欠落部分。 Go 言語では、github.com/disintegration/imaging などの画像処理用のライブラリを使用できます。この記事では、このライブラリを使用して画像のカラー グラデーションとグレースケール マッピングを実行する方法を紹介します。
1. ライブラリをインポートする
まず、github.com/disintegration/imaging ライブラリを Go プロジェクトに導入する必要があります。次のコマンドを使用してインストールできます:
go get -u github.com/disintegration/imaging
2. カラー グラデーション
色を作成したい場合は、画像 グラデーション効果は次の手順で実現できます:
1. 画像の読み取り
イメージング ライブラリの Open 機能を使用して、画像を読み取ることができます。次のコードは、画像の読み取り方法を示しています:
import ( "github.com/disintegration/imaging" ) func main() { srcImg, err := imaging.Open("input.jpg") if err != nil { panic(err) } }
2. グラデーション画像の作成
次に、イメージング ライブラリの New 関数を使用して、新しい画像をグラデーションとして作成します。エフェクトの対象となる画像。次のコードは、ターゲット イメージを作成し、その幅と高さを指定する方法を示しています。
dstImg := imaging.New(800, 600, color.NRGBA{R: 0, G: 0, B: 0, A: 0})
この例では、色が黒 (RGB 値がすべて 0) のサイズ 800x600 のイメージを作成します。
3. グラデーション効果
イメージング ライブラリの機能を引き続き使用して、ソース画像のピクセル カラーをターゲット画像にマッピングして、グラデーション効果を実現できます。次のコードは、線形グラデーションの効果を実現する方法を示しています:
for y := 0; y < srcImg.Bounds().Dy(); y++ { for x := 0; x < srcImg.Bounds().Dx(); x++ { c := srcImg.At(x, y) r, g, b, a := c.RGBA() // 根据像素位置和颜色进行渐变计算 c = color.RGBA{ R: uint8(x * 255 / srcImg.Bounds().Dx()), G: uint8(y * 255 / srcImg.Bounds().Dy()), B: uint8(b / 65535 * 255), A: uint8(a / 65535 * 255), } dstImg.Set(x, y, c) } }
4. 画像を保存します
最後に、イメージング ライブラリの Save 関数を使用して、ターゲット画像をファイルに保存できます。 file:
err = imaging.Save(dstImg, "output.jpg") if err != nil { panic(err) }
これで、写真のカラーグラデーション処理が完了しました。
3. グレースケール マッピング
カラー グラデーションに加えて、画像をグレースケールに変換することもできます。次のコードは、画像のグレースケール マッピングを実装する方法を示しています。
func grayscaleMapping() { srcImg, err := imaging.Open("input.jpg") if err != nil { panic(err) } // 新建一张灰度图像 dstImg := imaging.New(srcImg.Bounds().Dx(), srcImg.Bounds().Dy(), color.NRGBA{R: 0, G: 0, B: 0, A: 0}) for y := 0; y < srcImg.Bounds().Dy(); y++ { for x := 0; x < srcImg.Bounds().Dx(); x++ { c := srcImg.At(x, y) r, g, b, _ := c.RGBA() intensity := (r + g + b) / 3 // 根据像素灰度值映射为新的颜色 c = color.RGBA{R: uint8(intensity), G: uint8(intensity), B: uint8(intensity), A: 255} dstImg.Set(x, y, c) } } err = imaging.Save(dstImg, "output_grayscale.jpg") if err != nil { panic(err) } }
上記のコードは、ソース画像の各ピクセルの RGB 値を平均し、その結果を新しいピクセルの RGB 値として使用します。グレースケール マッピング、度数マッピング。
結論:
github.com/disintegration/imaging ライブラリを導入することで、Go 言語でさまざまな画像処理操作を実行できるようになります。この記事では、カラー グラデーションとグレースケール マッピングを例として取り上げ、具体的なコード例を示します。読者は、ニーズに基づいて、これに基づいてより複雑な画像処理操作を実行できます。
以上がGolang 画像処理: 画像のカラー グラデーションとグレースケール マッピングを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。