Skip to content

Commit af8c326

Browse files
authored
Rework _to_png (#2135)
1 parent d1df1c2 commit af8c326

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

folium/folium.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,9 @@ def _repr_html_(self, **kwargs) -> str:
358358
out = self._parent._repr_html_(**kwargs)
359359
return out
360360

361-
def _to_png(self, delay: int = 3, driver: Any = None) -> bytes:
361+
def _to_png(
362+
self, delay: int = 3, driver: Any = None, size: Optional[Sequence[int]] = None
363+
) -> bytes:
362364
"""Export the HTML to byte representation of a PNG image.
363365
364366
Uses selenium to render the HTML and record a PNG. You may need to
@@ -372,6 +374,7 @@ def _to_png(self, delay: int = 3, driver: Any = None) -> bytes:
372374
>>> m._to_png(time=10) # Wait 10 seconds between render and snapshot.
373375
374376
"""
377+
375378
if self._png_image is None:
376379
if driver is None:
377380
from selenium import webdriver
@@ -380,11 +383,21 @@ def _to_png(self, delay: int = 3, driver: Any = None) -> bytes:
380383
options.add_argument("--headless")
381384
driver = webdriver.Firefox(options=options)
382385

386+
if size is None:
387+
driver.fullscreen_window()
388+
else:
389+
window_size = driver.execute_script(
390+
"""
391+
return [window.outerWidth - window.innerWidth + arguments[0],
392+
window.outerHeight - window.innerHeight + arguments[1]];
393+
""",
394+
*size,
395+
)
396+
driver.set_window_size(*window_size)
383397
html = self.get_root().render()
384398
with temp_html_filepath(html) as fname:
385399
# We need the tempfile to avoid JS security issues.
386400
driver.get(f"file:///{fname}")
387-
driver.fullscreen_window()
388401
time.sleep(delay)
389402
div = driver.find_element("class name", "folium-map")
390403
png = div.screenshot_as_png

0 commit comments

Comments
 (0)