def list_images(img_dpath_, ignore_list=[], recursive=False, fullpath=False,
                full=None, sort=True):
    r
    if full is not None:
        fullpath = fullpath or full
    img_dpath_ = util_str.ensure_unicode(img_dpath_)
    img_dpath = realpath(img_dpath_)
    ignore_set = set(ignore_list)
    gname_list_ = []
    assertpath(img_dpath)
    true_imgpath = truepath(img_dpath)
    for root, dlist, flist in os.walk(true_imgpath):
        root = util_str.ensure_unicode(root)
        rel_dpath = relpath(root, img_dpath)
        if any([dname in ignore_set for dname in dirsplit(rel_dpath)]):
            continue
        for fname in iter(flist):
            fname = util_str.ensure_unicode(fname)
            gname = join(rel_dpath, fname).replace('\\', '/')
            if gname.startswith('./'):
                gname = gname[2:]
            if fpath_has_imgext(gname):
                if gname in ignore_set:
                    continue
                if fullpath:
                    gpath = join(img_dpath, gname)
                    gname_list_.append(gpath)
                else:
                    gname_list_.append(gname)
        if not recursive:
            break
    if sort:
        gname_list = sorted(gname_list_)
    return gname_list