たまたま見つけたので、メモしておく。
cf. Go言語で画像ファイルか確認してみる – Qiita
画像を扱うには image
パッケージを利用する。が、具体的なフォーマットを扱うにはそれぞれに対応したパッケージの import
が必要。直接には使わないけど image
パッケージの関数で内部的に使われる。注意しなきゃいけないのは、普通に import
すると、インポートしてるのに使ってないぞエラーが出ること。そこで下のコードのように、パッケージ名の前に _
をつけている。
package main import ( "fmt" "os" "image" _ "image/jpeg" _ "image/png" _ "image/gif" _ "golang.org/x/image/bmp" _ "golang.org/x/image/tiff" ) func main() { f, err := os.Open(os.Args[1]) if err != nil { fmt.Println(err) return } defer f.Close() _, format, err := image.DecodeConfig(f) if err != nil { fmt.Println(err) return } fmt.Println(format) }
それから、標準で対応しているのは、JPEG, PNG, GIF のみ。ほかに BMP と TIFF が外部のパッケージを導入すれば対応できる。こんなふうに。
^o^ > go get golang.org/x/image/bmp ^o^ > go get golang.org/x/image/tiff
で、実行例。
^o^ > go run imgcheck.go sample.jpg jpeg ^o^ > go run imgcheck.go sample.png png ^o^ > go run imgcheck.go sample.bmp bmp