mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from PIL import Image
 | 
						|
 | 
						|
modules = {
 | 
						|
    "pil": "PIL._imaging",
 | 
						|
    "tkinter": "PIL._imagingtk",
 | 
						|
    "freetype2": "PIL._imagingft",
 | 
						|
    "littlecms2": "PIL._imagingcms",
 | 
						|
    "webp": "PIL._webp",
 | 
						|
    "transp_webp": ("WEBP", "WebPDecoderBuggyAlpha")
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def check_module(feature):
 | 
						|
    if feature not in modules:
 | 
						|
        raise ValueError("Unknown module %s" % feature)
 | 
						|
 | 
						|
    module = modules[feature]
 | 
						|
 | 
						|
    method_to_call = None
 | 
						|
    if type(module) is tuple:
 | 
						|
        module, method_to_call = module
 | 
						|
 | 
						|
    try:
 | 
						|
        imported_module = __import__(module)
 | 
						|
    except ImportError:
 | 
						|
        # If a method is being checked, None means that
 | 
						|
        # rather than the method failing, the module required for the method
 | 
						|
        # failed to be imported first
 | 
						|
        return None if method_to_call else False
 | 
						|
 | 
						|
    if method_to_call:
 | 
						|
        method = getattr(imported_module, method_to_call)
 | 
						|
        return method() is True
 | 
						|
    else:
 | 
						|
        return True
 | 
						|
 | 
						|
 | 
						|
def get_supported_modules():
 | 
						|
    supported_modules = []
 | 
						|
    for feature in modules:
 | 
						|
        if check_module(feature):
 | 
						|
            supported_modules.append(feature)
 | 
						|
    return supported_modules
 | 
						|
 | 
						|
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():
 | 
						|
    supported_codecs = []
 | 
						|
    for feature in codecs:
 | 
						|
        if check_codec(feature):
 | 
						|
            supported_codecs.append(feature)
 | 
						|
    return supported_codecs
 |