def load_image(imagepath,
               dirname='',
               place_holder=False,
               recursive=False,
               ncase_cmp=True,
               convert_callback=None,
               verbose=False,
               relpath=None,
               check_existing=False,
               force_reload=False):
    '''Return an image from the file path with options to search multiple paths and return a placeholder if its not found. 

    :param filepath: The image filename If a path precedes it, this will be searched as well. 
    :type filepath: string
    :param dirname: is the directory where the image may be located - any file at the end will be ignored. 
    :type dirname: string
    :param place_holder: if True a new place holder image will be created. this is useful so later you can relink the image to its original data. 
    :type place_holder: bool
    :param recursive: If True, directories will be recursively searched. Be careful with this if you have files in your root directory because it may take a long time. 
    :type recursive: bool
    :param ncase_cmp: on non windows systems, find the correct case for the file. 
    :type ncase_cmp: bool
    :param convert_callback: a function that takes an existing path and returns a new one. Use this when loading image formats blender may not support, the CONVERT_CALLBACK can take the path for a GIF (for example), convert it to a PNG and return the PNG’s path. For formats blender can read, simply return the path that is given. 
    :type convert_callback: function
    :param relpath: If not None, make the file relative to this path. 
    :type relpath: None or string
    :param check_existing: If true, returns already loaded image datablock if possible (based on file path). 
    :type check_existing: bool
    :param force_reload: If true, force reloading of image (only useful when check_existing is also enabled). 
    :type force_reload: bool
    :return:  an image or None 
    '''

    pass
