1:mod:`imghdr` --- Determine the type of an image
2================================================
3
4.. module:: imghdr
5   :synopsis: Determine the type of image contained in a file or byte stream.
6
7**Source code:** :source:`Lib/imghdr.py`
8
9--------------
10
11The :mod:`imghdr` module determines the type of image contained in a file or
12byte stream.
13
14The :mod:`imghdr` module defines the following function:
15
16
17.. function:: what(filename[, h])
18
19   Tests the image data contained in the file named by *filename*, and returns a
20   string describing the image type.  If optional *h* is provided, the *filename*
21   is ignored and *h* is assumed to contain the byte stream to test.
22
23The following image types are recognized, as listed below with the return value
24from :func:`what`:
25
26+------------+-----------------------------------+
27| Value      | Image format                      |
28+============+===================================+
29| ``'rgb'``  | SGI ImgLib Files                  |
30+------------+-----------------------------------+
31| ``'gif'``  | GIF 87a and 89a Files             |
32+------------+-----------------------------------+
33| ``'pbm'``  | Portable Bitmap Files             |
34+------------+-----------------------------------+
35| ``'pgm'``  | Portable Graymap Files            |
36+------------+-----------------------------------+
37| ``'ppm'``  | Portable Pixmap Files             |
38+------------+-----------------------------------+
39| ``'tiff'`` | TIFF Files                        |
40+------------+-----------------------------------+
41| ``'rast'`` | Sun Raster Files                  |
42+------------+-----------------------------------+
43| ``'xbm'``  | X Bitmap Files                    |
44+------------+-----------------------------------+
45| ``'jpeg'`` | JPEG data in JFIF or Exif formats |
46+------------+-----------------------------------+
47| ``'bmp'``  | BMP files                         |
48+------------+-----------------------------------+
49| ``'png'``  | Portable Network Graphics         |
50+------------+-----------------------------------+
51
52.. versionadded:: 2.5
53   Exif detection.
54
55You can extend the list of file types :mod:`imghdr` can recognize by appending
56to this variable:
57
58
59.. data:: tests
60
61   A list of functions performing the individual tests.  Each function takes two
62   arguments: the byte-stream and an open file-like object. When :func:`what` is
63   called with a byte-stream, the file-like object will be ``None``.
64
65   The test function should return a string describing the image type if the test
66   succeeded, or ``None`` if it failed.
67
68Example::
69
70   >>> import imghdr
71   >>> imghdr.what('bass.gif')
72   'gif'
73
74