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