🛠️
Goでリサイズした画像をUUIDで保存する話
週末にGoでリサイズするCLIを作ってみました。
よくあるCLIとしてこんな感じにすると思うのですが
# hoge -> in
# foo -> out
$ go run main.go hoge.png foo.png
今回はUUIDを使って保存するようにしました。
仕様について
今回作ったCLIは以下の手順でリサイズされます
- コマンドライン引数で画像ファイルを入力する
- 画像をデーコードして画像情報を取得
- リサイズ
- uuid + 1の拡張子で出力
UUID
uuidについてはご存じの方もいると思いますが、世界中で重複しないidのことです。
今回はこちらのライブラリを使いました。
特徴
今回は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