Suppose you have an image file (a PNG or JPG) and wish to get its width and height in a Go program. This can be done with the "image" package.
With images, we can get the Width and Height from the image file just by parsing the file. We simply call DecodeConfig
on a JPG or PNG.
To begin, we must import the "image" module. If we import the "image/jpeg" and "image/png" modules as well, we get full support for those types.
os.Open
on the image file, and then bufio.NewReader
to get a Reader for the file.DecodeConfig
receives the Reader we just created by calling bufio.Reader
. It returns a Config instance.package main import ( "fmt" "os" "bufio" "image" _ "image/jpeg" _ "image/png" ) func main() { path := `C:\programs\zip-chart.png` // Open file. inputFile, _ := os.Open(path) reader := bufio.NewReader(inputFile) // Decode image. config, _, _ := image.DecodeConfig(reader) // Print config. fmt.Printf("IMAGE: width=%v height=%v\n", config.Width, config.Height) }IMAGE: width=300 height=151
If you try to open a JPEG or PNG file without the special import statement for that type, it will not work correctly.
JPEGs
, you could remove the PNG import. This probably is not worth doing._ "image/jpeg" _ "image/png"
Image parsing can be done with built-in libraries like the "image" module in Go. It is rarely worth implementing yourself, unless you are trying to learn about image formats.