|
|
- from . import Image
-
- modules = {
- "pil": "PIL._imaging",
- "tkinter": "PIL._tkinter_finder",
- "freetype2": "PIL._imagingft",
- "littlecms2": "PIL._imagingcms",
- "webp": "PIL._webp",
- }
-
-
- def check_module(feature):
- if not (feature in modules):
- raise ValueError("Unknown module %s" % feature)
-
- module = modules[feature]
-
- try:
- __import__(module)
- return True
- except ImportError:
- return False
-
-
- def get_supported_modules():
- return [f for f in modules if check_module(f)]
-
-
- codecs = {
- "jpg": "jpeg",
- "jpg_2000": "jpeg2k",
- "zlib": "zip",
- "libtiff": "libtiff"
- }
-
-
- def check_codec(feature):
- if feature not in codecs:
- raise ValueError("Unknown codec %s" % feature)
-
- codec = codecs[feature]
-
- return codec + "_encoder" in dir(Image.core)
-
-
- def get_supported_codecs():
- return [f for f in codecs if check_codec(f)]
-
-
- features = {
- "webp_anim": ("PIL._webp", 'HAVE_WEBPANIM'),
- "webp_mux": ("PIL._webp", 'HAVE_WEBPMUX'),
- "transp_webp": ("PIL._webp", "HAVE_TRANSPARENCY"),
- "raqm": ("PIL._imagingft", "HAVE_RAQM")
- }
-
-
- def check_feature(feature):
- if feature not in features:
- raise ValueError("Unknown feature %s" % feature)
-
- module, flag = features[feature]
-
- try:
- imported_module = __import__(module, fromlist=['PIL'])
- return getattr(imported_module, flag)
- except ImportError:
- return None
-
-
- def get_supported_features():
- return [f for f in features if check_feature(f)]
-
-
- def check(feature):
- return (feature in modules and check_module(feature) or
- feature in codecs and check_codec(feature) or
- feature in features and check_feature(feature))
-
-
- def get_supported():
- ret = get_supported_modules()
- ret.extend(get_supported_features())
- ret.extend(get_supported_codecs())
- return ret
|