ホームページ  >  記事  >  バックエンド開発  >  Golang 画像処理: 画像の色反転と色相分離を実行する方法を学びます

Golang 画像処理: 画像の色反転と色相分離を実行する方法を学びます

WBOY
WBOYオリジナル
2023-08-26 13:40:541572ブラウズ

Golang 画像処理: 画像の色反転と色相分離を実行する方法を学びます

Golang 画像処理: 画像の色反転とトーン分離を実行する方法を学びます

はじめに:
デジタル画像処理技術の発展により、画像処理の方法が画像処理 さまざまな特殊効果を実行することが重要なスキルになっています。 Golang では、強力な画像処理ライブラリを使用して、さまざまな画像処理効果を実現できます。この記事では、Golang を使用して画像の色反転とトーン分離を実行する方法に焦点を当てます。

  1. 画像の色の反転

色の反転は、シンプルで一般的な画像処理効果です。色反転を使用すると、画像の通常の色をその反対の色と交換して、まったく異なる効果を作成できます。

コード例:

package main

import (
    "fmt"
    "image"
    "image/color"
    "image/jpeg"
    "log"
    "os"
)

func main() {
    // 读取示例图片
    file, err := os.Open("example.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // 解码图片
    img, err := jpeg.Decode(file)
    if err != nil {
        log.Fatal(err)
    }

    // 获取图片宽高
    bounds := img.Bounds()
    width, height := bounds.Max.X, bounds.Max.Y

    // 创建新图片
    newImg := image.NewRGBA(bounds)

    // 图片颜色反转
    for i := 0; i < height; i++ {
        for j := 0; j < width; j++ {
            // 获取像素点颜色
            oldColor := img.At(j, i)
            r, g, b, _ := oldColor.RGBA()

            // 计算反转后的颜色
            newR, newG, newB := 255-r, 255-g, 255-b

            // 设置新像素点颜色
            newColor := color.RGBA{uint8(newR), uint8(newG), uint8(newB), 0xff}
            newImg.Set(j, i, newColor)
        }
    }

    // 创建保存结果的文件
    resultFile, err := os.Create("result.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer resultFile.Close()

    // 保存结果图片
    if err := jpeg.Encode(resultFile, newImg, &jpeg.Options{100}); err != nil {
        log.Fatal(err)
    }

    fmt.Println("图片颜色反转完成")
}
  1. 画像トーン分離

色分離は、カラー画像をカラー画像に変換する一般的な特殊効果処理方法です。少数の原色のみを含む画像は、独特の視覚効果を生み出すことができます。

コード例:

package main

import (
    "fmt"
    "image"
    "image/color"
    "image/jpeg"
    "log"
    "os"
)

func main() {
    // 读取示例图片
    file, err := os.Open("example.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // 解码图片
    img, err := jpeg.Decode(file)
    if err != nil {
        log.Fatal(err)
    }

    // 获取图片宽高
    bounds := img.Bounds()
    width, height := bounds.Max.X, bounds.Max.Y

    // 创建新图片
    newImg := image.NewRGBA(bounds)

    // 图片色调分离
    for i := 0; i < height; i++ {
        for j := 0; j < width; j++ {
            // 获取像素点颜色
            oldColor := img.At(j, i)
            r, g, b, _ := oldColor.RGBA()

            // 计算色调分离后的颜色
            newR := (r/65535)*65535/2 + 32767
            newG := (g/65535)*65535/2 + 32767
            newB := (b/65535)*65535/2 + 32767

            // 设置新像素点颜色
            newColor := color.RGBA{uint8(newR), uint8(newG), uint8(newB), 0xff}
            newImg.Set(j, i, newColor)
        }
    }

    // 创建保存结果的文件
    resultFile, err := os.Create("result.jpg")
    if err != nil {
        log.Fatal(err)
    }
    defer resultFile.Close()

    // 保存结果图片
    if err := jpeg.Encode(resultFile, newImg, &jpeg.Options{100}); err != nil {
        log.Fatal(err)
    }

    fmt.Println("图片色调分离完成")
}

概要:
この記事では、Golang を使用して画像の色反転とトーン分離を実行する方法を紹介します。コード例を通じて、画像を読み取ってデコードし、画像に対してピクセルレベルの操作を実行し、最終的に結果の画像を生成する方法を学びました。この記事を学習することで、読者が Golang 画像処理の関連知識をさらに深め、さまざまな画像特殊効果処理を実装する能力を習得できることを願っています。

以上がGolang 画像処理: 画像の色反転と色相分離を実行する方法を学びますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

関連記事

続きを見る