【GO】画像処理


golangで以下のような画像処理のお試し。

  • jpeg,pngの保存
  • 座標ごとに処理
  • 画像読み込み
  • リサイズ
  • 重ね合わせ
  • 文字を入れる(日本語)

動作テスト

まずは簡単なテストから。

osパッケージでファイル出力、imageパッケージで画像処理します。

y座標に比例してR(赤)、x座標に比例してG(緑)、右下ほどB(青)が増加します。

画像読み込みと編集

先ほど作った画像を反転させてみます。

画像のエンコード、デコードには使いたい画像のフォーマットに対応したパッケージを読み込んでおく必要があります。

読み込まないと"image: unknown format"エラー。

 

他で使わない場合はエイリアスに_を設定する。

またImage.AtRGBA()16bitなので処理する前に変換が必要です。

アルファ値は255が不透明なのも注意。またNRGBAにしてもいいです。



サイズ変更と重ね合わせ

リサイズは面倒そうなので外部パッケージを使おうとGithubで「golang image」とかを検索した感じだとnfnt/resizeが人気。

今回はデフォルトのimage/drawより機能の多い公式のパッケージを使ってみる。

リサイズの際の補完方法は4通りあります。

  • NearestNeighbor:最近傍法
  • ApproxBiLinear:双一次近似
  • BiLinear:双一次補間
  • CatmullRom:スプライト曲線

画像によるけど下ほど品質が高くて時間がかかります。

文字(日本語)の画像化

リサイズと同じように公式の外部パッケージをメインに使います。

日本語を使いたいので、好きなフォントを使えるようにロード関数を作る。

 

フォント用に外部パッケージを3つ追加。

  • “github.com/golang/freetype/truetype”
  • “golang.org/x/image/font”
  • “golang.org/x/image/math/fixed”
Dotをいじっているのは中央に配置してます。

パッケージを使ってはいますが、かなり簡単に書けます。


コメントを残す

メールアドレスが公開されることはありません。