ホームページ  >  記事  >  バックエンド開発  >  Golang を使用して画像をトリミングおよびサイズ変更する方法

Golang を使用して画像をトリミングおよびサイズ変更する方法

王林
王林オリジナル
2023-08-27 09:19:471224ブラウズ

Golang を使用して画像をトリミングおよびサイズ変更する方法

Golang を使用して画像をトリミングおよび拡大縮小する方法

はじめに:
現代の Web 開発では、画像の処理が一般的な要件です。 Web サイトに画像を表示する場合でも、サムネイルを作成する場合でも、ユーザーがアップロードした画像をトリミングする場合でも、画像処理は重要なタスクです。この記事では、Golangを使って画像をトリミングしたりサイズ変更したりする方法を紹介します。

  1. 必要なライブラリをインストールする
    開始する前に、次の 2 つの Golang ライブラリをインストールする必要があります:
  2. github.com/nfnt/resize:画像のズームに使用します。
  3. github.com/disintegration/imaging: 画像のトリミングに使用されます。

次のコマンドを使用してインストールできます。

go get github.com/nfnt/resize
go get github.com/disintegration/imaging
  1. 画像のスケーリング
    画像のスケーリングとは、画像のサイズを同じ比率で調整することを指します。必要なサイズに。画像のスケーリングに resize ライブラリを使用する方法を示すサンプル コードを次に示します。

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/nfnt/resize"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 调整图片大小为指定尺寸
     resized := resize.Resize(300, 0, img, resize.Lanczos3)
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将调整大小后的图片保存为JPEG文件
     jpeg.Encode(out, resized, nil)
    
     fmt.Println("图片缩放完成")
    }

上記のコードでは、まず input というファイルを開きます。 .jpg の JPEG ファイルを開き、jpeg.Decode 関数を使用して画像をデコードします。次に、resize.Resize 関数を使用して、resize.Lanczos3 アルゴリズムを使用して、画像のサイズを 300 倍の自動的に計算された別のサイズに変更します。最後に、jpeg.Encode 関数を使用して、サイズ変更した画像を output.jpg という名前の JPEG ファイルとして保存します。

  1. 画像のトリミング
    画像のトリミングとは、指定された領域内の画像を、必要な位置とサイズに従って切り出すことを指します。画像のトリミングに imaging ライブラリを使用する方法を示すサンプル コードを次に示します。

    package main
    
    import (
     "fmt"
     "image"
     "image/jpeg"
     "log"
     "os"
    
     "github.com/disintegration/imaging"
    )
    
    func main() {
     file, err := os.Open("input.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer file.Close()
    
     // 使用jpeg.Decode函数解码JPEG文件
     img, err := jpeg.Decode(file)
     if err != nil {
         log.Fatal(err)
     }
    
     // 裁剪图片
     cropped := imaging.Crop(img, image.Rect(100, 100, 400, 300))
    
     out, err := os.Create("output.jpg")
     if err != nil {
         log.Fatal(err)
     }
     defer out.Close()
    
     // 使用jpeg.Encode函数将裁剪后的图片保存为JPEG文件
     jpeg.Encode(out, cropped, nil)
    
     fmt.Println("图片裁剪完成")
    }

上記のコードでは、最初に というファイルを開きます。 input.jpg の JPEG ファイルを開き、jpeg.Decode 関数を使用して画像をデコードします。次に、imaging.Crop 関数を使用して、指定された開始点と終了点の座標に基づいて画像をトリミングします。最後に、jpeg.Encode 関数を使用して、トリミングされた画像を output.jpg という名前の JPEG ファイルとして保存します。

結論:
画像処理に Golang を使用するのは非常に簡単で効率的です。 resize ライブラリと imaging ライブラリを使用すると、画像の切り抜きやサイズ変更が簡単にできます。この記事があなたにインスピレーションを与え、あなたのプロジェクトに役立つことを願っています。

以上がGolang を使用して画像をトリミングおよびサイズ変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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