12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語で画像ファイルか確認してみる

Last updated at Posted at 2017-02-27

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

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

imageパッケージを使用する

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

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

func main(){
  f, _ := os.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)
}

拡張

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

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

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

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

追記
@matsumatsu20 さんから編集依頼をいただいたためコードを修正しました。
ありがとうございます!

// f, _ := f.Open("path/to/image")
f, _ := os.Open("path/to/image")
12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?