Skip to content

Instantly share code, notes, and snippets.

@rickt
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rickt/358e52a22854443bd0d6 to your computer and use it in GitHub Desktop.
Save rickt/358e52a22854443bd0d6 to your computer and use it in GitHub Desktop.
check if a file really is a JPEG or not
package main
import (
"fmt"
"image"
"image/jpeg"
"os"
)
func checkIsJPEG(filename string) error {
reader, err := os.Open(filename)
defer reader.Close()
if err != nil {
fmt.Printf("file open error - %s\n", err)
return err
}
_, err = jpeg.Decode(reader)
if err != nil {
fmt.Printf("file %s likely isnt' a JPEG - %s\n", filename, err)
return err
} else {
fmt.Printf("file %s is a JPEG\n", filename)
return nil
}
return nil
}
func checkJPEGDimensions(filename string) error {
reader, err := os.Open(filename)
defer reader.Close()
if err != nil {
fmt.Printf("file open error - %s\n", err)
return err
}
im, _, err := image.DecodeConfig(reader)
if err != nil {
fmt.Printf("image decode error - %s\n", err)
return err
}
fmt.Printf("JPEG width = %d, height = %d\n", im.Width, im.Height)
return nil
}
func main() {
err := checkIsJPEG("/home/rickt/tmp/French-Bronze-Statue-Basset-Hound-Dog-Dogs-Doggy-Casting.jpg")
if err == nil {
checkJPEGDimensions("/home/rickt/tmp/French-Bronze-Statue-Basset-Hound-Dog-Dogs-Doggy-Casting.jpg")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment