# `features` Module

The `PIL.features` module can be used to detect which Pillow features are available on your system.

PIL.features.pilinfo(out=None, supported_formats=True)

  Prints information about this installation of Pillow. This function can be called with `python3 -m PIL`.

  Parameters

    - out – The output stream to print to. Defaults to `sys.stdout` if `None`.

    - supported_formats – If `True`, a list of all supported image file formats will be printed.

PIL.features.check(feature)
  Parameters

    feature – A module, codec, or feature name.

  Returns

    `True` if the module, codec, or feature is available, `False` or `None` otherwise.

PIL.features.version(feature)
  Parameters

    feature – The module, codec, or feature to check for.

  Returns

    The version number as a string, or `None` if unknown or not available.

PIL.features.get_supported()
  Returns

    A list of all supported modules, features, and codecs.

## Modules

Support for the following modules can be checked:

- `pil`: The Pillow core module, required for all functionality.

- `tkinter`: Tkinter support.

- `freetype2`: FreeType font support via `PIL.ImageFont.truetype()`.

- `littlecms2`: LittleCMS 2 support via `PIL.ImageCms`.

- `webp`: WebP image support.

PIL.features.check_module(feature)

  Checks if a module is available.

  Parameters

    feature – The module to check for.

  Returns

    `True` if available, `False` otherwise.

  Raises

    ValueError – If the module is not defined in this version of Pillow.

PIL.features.version_module(feature)
  Parameters

    feature – The module to check for.

  Returns

    The loaded version number as a string, or `None` if unknown or not available.

  Raises

    ValueError – If the module is not defined in this version of Pillow.

PIL.features.get_supported_modules()
  Returns

    A list of all supported modules.

## Codecs

Support for these is only checked during Pillow compilation. If the required library was uninstalled from the system, the `pil` core module may fail to load instead. Except for `jpg`, the version number is checked at run-time.

Support for the following codecs can be checked:

- `jpg`: (compile time) Libjpeg support, required for JPEG based image formats. Only compile time version number is available.

- `jpg_2000`: (compile time) OpenJPEG support, required for JPEG 2000 image formats.

- `zlib`: (compile time) Zlib support, required for zlib compressed formats, such as PNG.

- `libtiff`: (compile time) LibTIFF support, required for TIFF based image formats.

PIL.features.check_codec(feature)

  Checks if a codec is available.

  Parameters

    feature – The codec to check for.

  Returns

    `True` if available, `False` otherwise.

  Raises

    ValueError – If the codec is not defined in this version of Pillow.

PIL.features.version_codec(feature)
  Parameters

    feature – The codec to check for.

  Returns

    The version number as a string, or `None` if not available. Checked at compile time for `jpg`, run-time otherwise.

  Raises

    ValueError – If the codec is not defined in this version of Pillow.

PIL.features.get_supported_codecs()
  Returns

    A list of all supported codecs.

## Features

Some of these are only checked during Pillow compilation. If the required library was uninstalled from the system, the relevant module may fail to load instead. Feature version numbers are available only where stated.

Support for the following features can be checked:

- `libjpeg_turbo`: (compile time) Whether Pillow was compiled against the libjpeg-turbo version of libjpeg. Compile-time version number is available.

- `transp_webp`: Support for transparency in WebP images.

- `webp_mux`: (compile time) Support for EXIF data in WebP images.

- `webp_anim`: (compile time) Support for animated WebP images.

- `raqm`: Raqm library, required for `ImageFont.LAYOUT_RAQM` in `PIL.ImageFont.truetype()`. Run-time version number is available for Raqm 0.7.0 or newer.

- `libimagequant`: (compile time) ImageQuant quantization support in `PIL.Image.Image.quantize()`. Run-time version number is available.

- `xcb`: (compile time) Support for X11 in `PIL.ImageGrab.grab()` via the XCB library.

PIL.features.check_feature(feature)

  Checks if a feature is available.

  Parameters

    feature – The feature to check for.

  Returns

    `True` if available, `False` if unavailable, `None` if unknown.

  Raises

    ValueError – If the feature is not defined in this version of Pillow.

PIL.features.version_feature(feature)
  Parameters

    feature – The feature to check for.

  Returns

    The version number as a string, or `None` if not available.

  Raises

    ValueError – If the feature is not defined in this version of Pillow.

PIL.features.get_supported_features()
  Returns

    A list of all supported features.