@@ -358,7 +358,9 @@ def _repr_html_(self, **kwargs) -> str:
358
358
out = self ._parent ._repr_html_ (** kwargs )
359
359
return out
360
360
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 :
362
364
"""Export the HTML to byte representation of a PNG image.
363
365
364
366
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:
372
374
>>> m._to_png(time=10) # Wait 10 seconds between render and snapshot.
373
375
374
376
"""
377
+
375
378
if self ._png_image is None :
376
379
if driver is None :
377
380
from selenium import webdriver
@@ -380,11 +383,21 @@ def _to_png(self, delay: int = 3, driver: Any = None) -> bytes:
380
383
options .add_argument ("--headless" )
381
384
driver = webdriver .Firefox (options = options )
382
385
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 )
383
397
html = self .get_root ().render ()
384
398
with temp_html_filepath (html ) as fname :
385
399
# We need the tempfile to avoid JS security issues.
386
400
driver .get (f"file:///{ fname } " )
387
- driver .fullscreen_window ()
388
401
time .sleep (delay )
389
402
div = driver .find_element ("class name" , "folium-map" )
390
403
png = div .screenshot_as_png
0 commit comments