Golang の画像操作: 画像をミラーリング、回転、反転する方法

WBOY
リリース: 2023-08-25 22:31:44
オリジナル
1202 人が閲覧しました

Golang の画像操作: 画像をミラーリング、回転、反転する方法

Golang 画像操作: 画像をミラーリング、回転、反転する方法

1. はじめに
画像処理は、多くの開発シナリオで頻繁に遭遇するものです。要件。 Golang では、画像パッケージを使用して画像を操作および処理できます。この記事では、Golang を使用して画像をミラーリング、回転、反転する方法に焦点を当て、対応するコード例を示します。

2. ミラー操作
画像のミラーリングとは、画像の左右の配置を変更することです。 Golang では、draw パッケージの Flip 関数を使用してミラーリング操作を実装できます。

以下は画像をミラーリングして保存するサンプルコードです。

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // 打开图片文件
    file, err := os.Open("input.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建一个新的画布
    flipImg := image.NewRGBA(img.Bounds())

    // 镜像操作
    draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipHorizontal)

    // 创建输出文件
    output, err := os.Create("output_flip.jpg")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 保存为JPEG格式图片
    jpeg.Encode(output, flipImg, nil)
}
ログイン後にコピー

3. 回転操作
画像の回転とは、画像の向きや角度を変えることです。 Golang では、draw パッケージの Rotate 関数を使用して回転操作を実装できます。

以下は画像を時計回りに90度回転して保存するサンプルコードです。

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // 打开图片文件
    file, err := os.Open("input.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建一个新的画布,大小为旋转后的尺寸
    rotateImg := image.NewRGBA(image.Rect(0, 0, img.Bounds().Dy(), img.Bounds().Dx()))

    // 旋转操作
    draw.Draw(rotateImg, rotateImg.Bounds(), img, img.Bounds().Min, draw.Rotate90)

    // 创建输出文件
    output, err := os.Create("output_rotate.jpg")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 保存为JPEG格式图片
    jpeg.Encode(output, rotateImg, nil)
}
ログイン後にコピー

4. 反転操作
画像の反転操作とは、画像の上下の配置を変更することです。 Golang では、draw パッケージの Flip 関数を使用して反転操作を実装できます。

以下は画像を反転して保存するサンプルコードです。

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // 打开图片文件
    file, err := os.Open("input.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建一个新的画布
    flipImg := image.NewRGBA(img.Bounds())

    // 翻转操作
    draw.Draw(flipImg, flipImg.Bounds(), img, img.Bounds().Min, draw.FlipVertical)

    // 创建输出文件
    output, err := os.Create("output_flip.jpg")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 保存为JPEG格式图片
    jpeg.Encode(output, flipImg, nil)
}
ログイン後にコピー

上記のコード例では、イメージ パッケージの関連関数を使用してイメージを操作します。このうち、image.Decode 関数は、画像ファイルをデコードして画像オブジェクトを作成するために使用されます。操作する前に、まず新しい Canvas オブジェクトを作成 (つまり、新しい Image オブジェクトを作成) し、その後、draw パッケージの機能を使用して、ミラーリング、回転、反転などの操作を実行します。最後に、jpeg パッケージのエンコード機能を使用して、処理された画像を JPEG 形式で保存します。

5. 概要
この記事の紹介とコード例を通じて、Golang を使用して画像をミラーリング、回転、反転する方法を学びました。実際の開発では、プロジェクトのニーズを満たすために、特定のニーズに応じて対応する画像処理操作を実行できます。同時に、サイズ変更、トリミングなどの他の画像処理ライブラリと組み合わせて、より複雑な画像操作をさらに完了することもできます。

この記事が Golang 画像処理に携わる皆様のお役に立てれば幸いです。

以上がGolang の画像操作: 画像をミラーリング、回転、反転する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート