More than 1 year has passed since last update.

Go言語で画像ファイルか確認する

Go言語で書かれたサーバーサイドで
アップロードされたファイルが画像ファイルか確認する必要があったため今後の備忘録として記載します。

imageパッケージを使用する

imageパッケージを使用することで簡単にできます。

main.go
import(
  "image"
  _ "image/gif"
  _ "image/jpeg"
  _ "image/png"
  "os"
)

func main(){
  f, _ := f.Open("path/to/image")
  defer f.Close()
  _, format, err := image.DecodeConfig(f)
  if err != nil {
    // 画像フォーマットではない場合はエラーが発生する
    fmt.Println(err)
    return
  }
  // pngファイルの場合はformatがpng
  // jpegファイルの場合はformatがjpg
  // gifファイルの場合はformatがgif
  fmt.Println(format)
}

拡張

下記パッケージを使用することにより、より広い範囲で画像判定を行うことができます。

https://golang.org/x/image

importする箇所で下記のように追加することでbitmapやtiff形式の画像ファイルにも対応できます。

import(
  "image"
  _ "golang.org/x/image/bmp"
  _ "golang.org/x/image/tiff"
)

現状ではこれで十分なため、これ以上の調査は行っていませんが、
もし新たに画像フォーマットの対応が必要になれば根性出して自分でコードを
書けば拡張できるようになっているのがimageパッケージのいいとこかなと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.