Golang は効率的でシンプル、信頼性の高いプログラミング言語としてますます使用されるようになり、さまざまなアプリケーションの開発に Golang を使用する開発者や研究者が増えています。その中でも画像処理を伴うアプリケーションはますます増えています。
この記事ではGolangで画像を加工する方法を紹介します。
Golang では、画像パッケージを使用してさまざまな種類の画像を読み込むことができます。まず、次のコードを使用して画像パッケージをインポートする必要があります: 上記の
import ( "image" _ "image/jpeg" _ "image/png" "os" )
_ "image/jpeg"
および _ "image/png"
コードは、画像パッケージが jpeg および png 形式の画像を認識できるようにするためのものです。イメージ パッケージをインポートした後、image.Decode()
関数を使用してイメージを読み取ることができます。例:
// 打开图片文件 file, err := os.Open("test.png") if err != nil { // 处理错误... } defer file.Close() // 读取图片 img, _, err := image.Decode(file) if err != nil { // 处理错误... }
上記のコードでは、png 形式の画像ファイルを開き、image.Decode()
関数を通じてそのファイルを読み取りました。読み取った画像データはimg
変数に格納されます。
Golang では、image
および image/draw
パッケージによって提供されるさまざまな関数を使用できます。画像を処理するメソッド。
2.1 画像のサイズを調整する
画像のサイズを調整するには、resize()
関数を使用します。以下に例を示します。
// 调整到 200*100 大小 newImg := resize(img, 200, 100) // 将新图片保存到文件 out, err := os.Create("new.png") if err != nil { // 处理错误... } defer out.Close() png.Encode(out, newImg)
上記のコードの resize()
関数は、画像を指定されたサイズに拡大縮小します。次に、新しい画像をファイルに保存します。
2.2 画像のトリミング
画像をトリミングするには、SubImage()
メソッドを使用できます。以下に例を示します。
// 裁剪出图片的一个区域 subImg := img.(interface{ SubImage(r image.Rectangle) image.Image }).SubImage(image.Rect(100, 100, 200, 200)) // 将新图片保存到文件 out, err := os.Create("new.png") if err != nil { // 处理错误... } defer out.Close() png.Encode(out, subImg)
上記のコードの SubImage()
メソッドは、指定された領域の画像を切り抜きます。次に、新しい画像をファイルに保存します。
2.3 グラフィックの描画
画像上にグラフィックを描画するには、draw
パッケージが提供するさまざまなメソッドを使用できます。以下に例を示します。
// 创建一个新图像 newImg := image.NewRGBA(image.Rect(0, 0, 200, 200)) // 在新图像上绘制一个圆形 draw.Draw(newImg, newImg.Bounds(), image.Black, image.ZP, draw.Src) draw.Draw(newImg, image.Rect(20, 20, 180, 180), image.White, image.ZP, draw.Src) // 将新图像保存到文件 out, err := os.Create("new.png") if err != nil { // 处理错误... } defer out.Close() png.Encode(out, newImg)
上記のコードでは、新しい画像を作成し、その中に黒い円を描き、その中に白い四角形を描きます。最後に、新しい画像をファイルに保存します。
Golang は、画像を処理するための豊富な関数とメソッドを提供します。この記事では、グラフィックの読み込み、サイズ変更、トリミング、描画などの基本的な操作について説明しました。これらのスキルにより、開発者はさまざまな種類のイメージを簡単に操作できるようになります。
以上がgolang が画像をどのように処理するかについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。