@@ -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