🛠️

Goでリサイズした画像をUUIDで保存する話

2021/07/04に公開

週末にGoでリサイズするCLIを作ってみました。
https://github.com/komisan19/resizer-cli

よくあるCLIとしてこんな感じにすると思うのですが

# hoge -> in
# foo -> out
$ go run main.go hoge.png foo.png

今回はUUIDを使って保存するようにしました。

仕様について

今回作ったCLIは以下の手順でリサイズされます

  1. コマンドライン引数で画像ファイルを入力する
  2. 画像をデーコードして画像情報を取得
  3. リサイズ
  4. uuid + 1の拡張子で出力

UUID

uuidについてはご存じの方もいると思いますが、世界中で重複しないidのことです。
今回はこちらのライブラリを使いました。
https://github.com/google/uuid

特徴

今回はuuid + 拡張子で出力したいので以下のような感じでメソッド化してあげました。
(関数でも良かったかも。。。)

type Extension struct {
        extension string
}

func (e *Extension) CreatePath() string {
        uu, err := uuid.NewRandom()
        if err != nil {
                fmt.Println(err)
        }
        newPath := uu.String() + "." + e.extension
        return newPath
}

CreattPathメソッドでuuidを作成し、newPathでuuid + 拡張子を実現させてます。
拡張子は、入力された画像のデコードからswitch-caseで条件分岐させて出力しています。

例えば、hoge.pngを入力しているのであればuuid + pngといった形で出力されます。

まとめ

今回はCLIを作成しましたが、API化して画像サーバとして使ってみたくなりました。

Discussion