def get_screenshot_as_png(obj: Union[LayoutDOM, Document], *, driver: "Optional[WebDriver]" = None, timeout: int = 5, resources: Resources = INLINE, width: Optional[int] = None, height: Optional[int] = None) -> Image: ''' Get a screenshot of a ``LayoutDOM`` object, custom for BARC Args: obj (LayoutDOM or Document) : a Layout (Row/Column), Plot or Widget object or Document to export. driver (selenium.webdriver) : a selenium webdriver instance to use to export the image. timeout (int) : the maximum amount of time to wait for initialization. It will be used as a timeout for loading Bokeh, then when waiting for the layout to be rendered. Returns: image (PIL.Image.Image) : a pillow image loaded from PNG. .. warning:: Responsive sizing_modes may generate layouts with unexpected size and aspect ratios. It is recommended to use the default ``fixed`` sizing mode. ''' with tempfile.TemporaryDirectory(prefix="barc", dir=os.path.abspath(os.path.join(os.path.dirname(__file__),'..','static'))) as tmp: html = get_layout_html(obj, resources=resources, width=width, height=height) os.symlink(os.path.abspath("forest"),os.path.join(tmp,'forest')) htmlfile = os.path.join(tmp,'barcfigure.html') with open(htmlfile, mode="w", encoding="utf-8") as f: f.write(html) web_driver = driver if driver is not None else create_firefox_webdriver() web_driver.maximize_window() web_driver.get("file:///" + htmlfile) wait_until_render_complete(web_driver, timeout) [width, height, dpr] = _maximize_viewport(web_driver) png = web_driver.get_screenshot_as_png() web_driver.quit() return (Image.open(io.BytesIO(png)) .convert("RGBA") .crop((0, 0, width*dpr, height*dpr)) .resize((width, height)))
def test_create_firefox_webdriver() -> None: d = biw.create_firefox_webdriver() try: assert isinstance(d, selenium.webdriver.firefox.webdriver.WebDriver) finally: d.quit()
days = sorted(set(ita_vax_data['data_somministrazione'])) print(len(days)) vax_by_age_dose_nation = ita_vax_data.pivot_table( index='fascia_anagrafica', values=['prima_dose', 'seconda_dose'], aggfunc='sum') row_count = 4 regioni_vax = sorted(set(ita_vax_data['nome_area'])) fps = 3 driver = webdriver.create_firefox_webdriver() start_delay = 3 * fps end_delay = 10 * fps for i, day in enumerate(days): time_ita_vax_data = ita_vax_data[ita_vax_data['data_somministrazione'] <= day] plot_png = plot_day(time_ita_vax_data, day, i+1, len(days), row_count, driver) if i == 0: for j in range(start_delay): filename = f'race/race_to_vax_{(i + j):03d}.png' plot_png.save(filename) else: filename = f'race/race_to_vax_{(start_delay + i - 1):03d}.png'
def test_create_firefox_webdriver() -> None: d = biw.create_firefox_webdriver() assert isinstance(d, selenium.webdriver.firefox.webdriver.WebDriver)