Python 3.6.5 Documentation >  "imghdr" — Determine the type of an image

"imghdr" — Determine the type of an image
*****************************************

**Source code:** Lib/imghdr.py

======================================================================

The "imghdr" module determines the type of image contained in a file
or byte stream.

The "imghdr" module defines the following function:

imghdr.what(filename, h=None)

Tests the image data contained in the file named by *filename*, and
returns a string describing the image type. If optional *h* is
provided, the *filename* is ignored and *h* is assumed to contain
the byte stream to test.

Changed in version 3.6: Accepts a *path-like object*.

The following image types are recognized, as listed below with the
return value from "what()":

+--------------+-------------------------------------+
| Value | Image format |
+==============+=====================================+
| "'rgb'" | SGI ImgLib Files |
+--------------+-------------------------------------+
| "'gif'" | GIF 87a and 89a Files |
+--------------+-------------------------------------+
| "'pbm'" | Portable Bitmap Files |
+--------------+-------------------------------------+
| "'pgm'" | Portable Graymap Files |
+--------------+-------------------------------------+
| "'ppm'" | Portable Pixmap Files |
+--------------+-------------------------------------+
| "'tiff'" | TIFF Files |
+--------------+-------------------------------------+
| "'rast'" | Sun Raster Files |
+--------------+-------------------------------------+
| "'xbm'" | X Bitmap Files |
+--------------+-------------------------------------+
| "'jpeg'" | JPEG data in JFIF or Exif formats |
+--------------+-------------------------------------+
| "'bmp'" | BMP files |
+--------------+-------------------------------------+
| "'png'" | Portable Network Graphics |
+--------------+-------------------------------------+
| "'webp'" | WebP files |
+--------------+-------------------------------------+
| "'exr'" | OpenEXR Files |
+--------------+-------------------------------------+

New in version 3.5: The *exr* and *webp* formats were added.

You can extend the list of file types "imghdr" can recognize by
appending to this variable:

imghdr.tests

A list of functions performing the individual tests. Each function
takes two arguments: the byte-stream and an open file-like object.
When "what()" is called with a byte-stream, the file-like object
will be "None".

The test function should return a string describing the image type
if the test succeeded, or "None" if it failed.

Example:

>>> import imghdr
>>> imghdr.what('bass.gif')
'gif'