diff --git a/folium/utilities.py b/folium/utilities.py index e9807ad91d..29454de49c 100644 --- a/folium/utilities.py +++ b/folium/utilities.py @@ -195,7 +195,7 @@ def image_to_url( img = f.read() b64encoded = base64.b64encode(img).decode("utf-8") url = f"data:image/{fileformat};base64,{b64encoded}" - elif "ndarray" in image.__class__.__name__: + elif not isinstance(image, str): img = write_png(image, origin=origin, colormap=colormap) b64encoded = base64.b64encode(img).decode("utf-8") url = f"data:image/png;base64,{b64encoded}" diff --git a/tests/test_utilities.py b/tests/test_utilities.py index 26d346ca39..21b99adc40 100644 --- a/tests/test_utilities.py +++ b/tests/test_utilities.py @@ -11,6 +11,7 @@ escape_double_quotes, get_obj_in_upper_tree, if_pandas_df_convert_to_numpy, + image_to_url, javascript_identifier_path_to_array_notation, normalize_bounds_type, parse_font_size, @@ -234,6 +235,25 @@ def test_is_url(url): assert _is_url(url) is True +@pytest.mark.parametrize( + "image", + [ + [[0.0, 1.0], [1.0, 0.0]], + [[[255, 0, 0], [0, 255, 0]], [[0, 0, 255], [255, 255, 255]]], + ((0.0, 1.0), (1.0, 0.0)), + ], +) +def test_image_to_url_array_like(image): + url = image_to_url(image) + assert url == image_to_url(np.array(image)) + assert url.startswith("data:image/png;base64,") + + +def test_image_to_url_url(): + url = "https://example.com/img.png" + assert image_to_url(url) == url + + @pytest.mark.parametrize( "text,result", [