• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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=None)
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
23   .. versionchanged:: 3.6
24      Accepts a :term:`path-like object`.
25
26The following image types are recognized, as listed below with the return value
27from :func:`what`:
28
29+------------+-----------------------------------+
30| Value      | Image format                      |
31+============+===================================+
32| ``'rgb'``  | SGI ImgLib Files                  |
33+------------+-----------------------------------+
34| ``'gif'``  | GIF 87a and 89a Files             |
35+------------+-----------------------------------+
36| ``'pbm'``  | Portable Bitmap Files             |
37+------------+-----------------------------------+
38| ``'pgm'``  | Portable Graymap Files            |
39+------------+-----------------------------------+
40| ``'ppm'``  | Portable Pixmap Files             |
41+------------+-----------------------------------+
42| ``'tiff'`` | TIFF Files                        |
43+------------+-----------------------------------+
44| ``'rast'`` | Sun Raster Files                  |
45+------------+-----------------------------------+
46| ``'xbm'``  | X Bitmap Files                    |
47+------------+-----------------------------------+
48| ``'jpeg'`` | JPEG data in JFIF or Exif formats |
49+------------+-----------------------------------+
50| ``'bmp'``  | BMP files                         |
51+------------+-----------------------------------+
52| ``'png'``  | Portable Network Graphics         |
53+------------+-----------------------------------+
54| ``'webp'`` | WebP files                        |
55+------------+-----------------------------------+
56| ``'exr'``  | OpenEXR Files                     |
57+------------+-----------------------------------+
58
59.. versionadded:: 3.5
60   The *exr* and *webp* formats were added.
61
62
63You can extend the list of file types :mod:`imghdr` can recognize by appending
64to this variable:
65
66
67.. data:: tests
68
69   A list of functions performing the individual tests.  Each function takes two
70   arguments: the byte-stream and an open file-like object. When :func:`what` is
71   called with a byte-stream, the file-like object will be ``None``.
72
73   The test function should return a string describing the image type if the test
74   succeeded, or ``None`` if it failed.
75
76Example::
77
78   >>> import imghdr
79   >>> imghdr.what('bass.gif')
80   'gif'
81
82