Golang 画像処理: 画像のカラー グラデーションとグレースケール マッピングを実行する方法

王林
リリース: 2023-08-19 08:53:09
オリジナル
1684 人が閲覧しました

Golang 画像処理: 画像のカラー グラデーションとグレースケール マッピングを実行する方法

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!