HTML2Image is a lightweight Python package that acts as a wrapper around the headless mode of existing web browsers to generate images from URLs and from HTML+CSS strings or files.

Overview

html2image logo

HTML2Image

PyPI PyPI PyPI GitHub GitHub

HTML2Image is a lightweight Python package that acts as a wrapper around the headless mode of existing web browsers to generate images from URLs and from HTML+CSS strings or files.

This package has been tested on Windows, Ubuntu (desktop and server) and MacOS. It is currently in a work in progress stage. If you encounter any problem or difficulties while using it, feel free to open an issue on the GitHub page of this project. Feedback is also welcome!

Principle

Most web browsers have a Headless Mode, which is a way to run them without displaying any graphical interface. Headless mode is mainly used for automated testings but also comes in handy if you want to take screenshots of web pages that are exact replicas of what you would see on your screen if you were using the browser yourself.

However, for the sake of taking screenshots, headless mode is not very convenient to use. HTML2Image aims to hide the inconveniences of the browsers' headless modes while adding useful features such as allowing to create an image from as little as a string.

For more information about headless modes :

Installation

HTML2Image is published on PyPI and can be installed through pip:

pip install --upgrade html2image

In addition to this package, at least one of the following browsers must be installed on your machine :

  • Google Chrome (Windows, MacOS)
  • Chromium Brower (Linux)

Usage

First, import the package and instantiate it

from html2image import Html2Image
hti = Html2Image()
Multiple arguments can be passed to the constructor (click to expand):
  • browser : Browser that will be used, set by default to 'chrome' (the only browser supported by HTML2Image at the moment)
  • browser_executable : The path or the command that can be used to find the executable of a specific browser.
  • output_path : Path to the folder to which taken screenshots will be outputed. Default is the current working directory of your python program.
  • size : 2-Tuple reprensenting the size of the screenshots that will be taken. Default value is (1920, 1080).
  • temp_path : Path that will be used to put together different resources when screenshotting strings of files. Default value is %TEMP%/html2image on Windows, and /tmp/html2image on Linux and MacOS.

Example:

hti = Html2Image(size=(500, 200))

You can also change these values later:

hti.size = (500, 200)

Then take a screenshot

The screenshot method is the basis of this package, most of the time, you won't need to use anything else. It can take screenshots of a lot of things :

  • URLs via the url parameter;
  • HTML and CSS files via the html_file and css_file parameters;
  • HTML and CSS strings via the html_str and css_str parameters;
  • and "other" types of files via the other_file parameter (try it with .svg files!).

And you can also (optional):

  • Change the size of the screenshots using the size parameter;
  • Save the screenshots as a specific name using the save_as parameter.

N.B. : The screenshot method returns a list containing the path(s) of the screenshot(s) it took.

A few examples

  • URL to image
hti.screenshot(url='https://www.python.org', save_as='python_org.png')
  • HTML & CSS strings to image
An interesting title This page will be red""" css = "body {background: red;}" hti.screenshot(html_str=html, css_str=css, save_as='red_page.png') ">
html = """

An interesting title

This page will be red"""
css = "body {background: red;}" hti.screenshot(html_str=html, css_str=css, save_as='red_page.png')
  • HTML & CSS files to image
hti.screenshot(
    html_file='blue_page.html', css_file='blue_background.css',
    save_as='blue_page.png'
)
  • Other files to image
hti.screenshot(other_file='star.svg')
  • Change the screenshots' size
hti.screenshot(other_file='star.svg', size=(500, 500))

Click to show all the images generated with all the code above sample_url_to_img.png sample_strings_to_img sample_files_to_img sample_other_to_img sample_other_50_50

  • Change the directory to which the screenshots are saved
hti = Html2Image(output_path='my_screenshot_folder')

OR

hti.output_path = 'my_screenshot_folder'

N.B. : the output path will be changed for all future screenshots.


Use lists in place of any parameters while using the screenshot method

  • Screenshot multiple objects using only one filename, or one filename per file:
# create three files from one filename
hti.screenshot(html_str=['A', 'B', 'C'], save_as='ABC.png')
# outputs ABC_0.png, ABC_1.png, ABC_2.png

# create three files from from different filenames
hti.screenshot(html_str=['A', 'B', 'C'], save_as=['A.png', 'B.png', 'C.png'])
# outputs A.png, B.png, C.png
  • Take multiple screenshots with the same size
# take four screenshots with a resolution of 100*50
hti.screenshot(
    html_str=['A', 'B', 'C', 'D']
    size=(100, 50)
)
  • Take multiple screenshots with different sizes
# take four screenshots with different resolutions from three given sizes
hti.screenshot(
    html_str=['A', 'B', 'C', 'D'],
    size=[(100, 50), (100, 100), (50, 50)]
)
# respectively 100*50, 100*100, 50*50, 50*50
# if not enough sizes are given, the last size in the list will be repeated
  • Apply CSS string(s) to multiple HTML string(s)
# screenshot two html strings and apply css strings on both
hti.screenshot(
    html_str=['A', 'B'],
    css_str='body {background: red;}'
)

# screenshot two html strings and apply multiple css strings on both
hti.screenshot(
    html_str=['A', 'B'],
    css_str=['body {background: red;}', 'body {font-size: 50px;}']
)

# screenshot one html string and apply multiple css strings on it
hti.screenshot(
    html_str='A',
    css_str=['body {background: red;}', 'body {font-size: 50px;}']
)

  • Retrieve the path of the generated file(s)
    The screenshot method returns a list containing the path(s) of the screenshot(s):
>> ['D:\\myFiles\\letters_0.png', 'D:\\myFiles\\letters_1.png', 'D:\\myFiles\\letters_2.png'] ">
paths = hti.screenshot(
    html_str=['A', 'B', 'C'],
    save_as="letters.png",
)

print(paths)
# >>> ['D:\\myFiles\\letters_0.png', 'D:\\myFiles\\letters_1.png', 'D:\\myFiles\\letters_2.png']

Change browser flags

In some cases, you may need to change the flags that are used to run the headless mode of a browser.

Flags can be used to:

  • Change the default background color of the pages;
  • Hide the scrollbar;
  • Add delay before taking a screenshot;
  • Allow you to use Html2Image when you're root, as you will have to specify the --no-sandbox flag;

You can find the full list of Chrome / Chromium flags here.

There are two ways to specify custom flags:

# At the object instanciation
hti = Html2image(custom_flags=['--my_flag', '--my_other_flag=value'])

# Afterwards
hti.browser.flags = ['--my_flag', '--my_other_flag=value']
  • Flags example use-case: adding a delay before taking a screenshot

With Chrome / Chromium, screenshots are fired directly after there is no more "pending network fetches", but you may sometimes want to add a delay before taking a screenshot, to wait for animations to end for example. There is a flag for this purpose, --virtual-time-budget=VALUE_IN_MILLISECONDS. You can use it like so:

hti = Html2Image(
    custom_flags=['--virtual-time-budget=10000', '--hide-scrollbars']
)

hti.screenshot(url='http://example.org')
  • Default flags

For ease of use, some flags are set by default. However default flags are not used if you decide to specify custom_flags or change the value of browser.flags:

# Taking a look at the default flags
>>> hti = Html2Image()
>>> hti.browser.flags
['--default-background-color=0', '--hide-scrollbars']

# Changing the value of browser.flags gets rid of the default flags.
>>> hti.browser.flags = ['--1', '--2']
>>> hti.browser.flags
['--1', '--2'] 

# Using the custom_flags parameter gets rid of the default flags.
>>> hti = Html2Image(custom_flags=['--a', '--b'])
>>> hti.browser.flags
['--a', '--b']

Using the CLI

HTML2image comes with a Command Line Interface which you can use to generate screenshots from files and urls on the go.

The CLI is a work in progress and may be subject to changes. You can call it by typing hti or html2image into a terminal.

argument description example
-h, --help Shows the help message hti -h
-U, --urls Screenshots a list of URLs hti -U https://www.python.org
-H, --html Screenshots a list of HTML files hti -H file.html
-C, --css Attaches a CSS files to the HTML ones hti -H file.html -C style.css
-O, --other Screenshots a list of files of type "other" hti -O star.svg
-S, --save-as A list of the screenshot filename(s) hti -O star.svg -S star.png
-s, --size A list of the screenshot size(s) hti -O star.svg -s 50,50
-o, --output_path Change the output path of the screenshots (default is current working directory) hti star.svg -o screenshot_dir
-q, --quiet Disable all CLI's outputs hti --quiet
-v, --verbose More details, can help debugging hti --verbose
--chrome_path Specify a different chrome path
--temp_path Specify a different temp path (where the files are loaded)

... now within a Docker container !

You can also test the package and the CLI without having to install everything on your local machine, via a Docker container.

  • First git clone this repo
  • cd inside it
  • Build the image : docker build -t html2image .
  • Run and get inside the container : docker run -it html2image /bin/bash

Inside that container, the html2image package as well as chromium are installed.

You can load and execute a python script to use the package, or simply use the CLI.

On top of that, you can also use volumes to bind a container directory to your local machine directory, allowing you to retrieve the generated images, or even load some resources (HTML, CSS or Python files).

Testing

Only basic testing is available at the moment. To run tests, install the requirements (Pillow) and run PyTest at the root of the project:

pip install -r requirements-test.txt
python -m pytest

FAQ

  • Can I automatically take a full page screenshot?
    Sadly no, it is not easily possible. Html2Image relies on the headless mode of Chrome/Chromium browsers to take screenshots and there is no way to "ask" for a full page screenshot at the moment. If you know a way to take one (by estimating the page size for example) I would be happy to see it, so please open an issue or a discussion!

  • Can I add delay before taking a screenshot?
    Yes you can, please take a look at the Change browser flags section of the readme.

  • Can I speed up the screenshot taking process?
    Yes, when you are taking a lot of screenshots, you can achieve better "performances" using Parallel Processing or Multiprocessing methods. You can find an example of it here.

  • Can I make a cookie modal disappear?
    Yes and no. No because there is no options to do it magically and extensions are not supported in headless Chrome (The I don't care about cookies extension would have been useful in this case). Yes because you can make any element of a page disappear by retrieving its source code, modifying it as you wish, and finally screenshotting the modified source code.

TODO List

  • A nice CLI (currently in a WIP state).
  • Support of other browsers (such as Firefox when their screenshot feature will work).
  • PDF generation?
  • Contributing, issue templates, pull request template, code of conduct.

If you see any typos or notice things that are odly said, feel free to create an issue or a pull request.

Comments
  • Not Getting Image

    Not Getting Image

    Python 3.9.5 html2image 2.0.1

    I'm using Chrome heroku buildpack

    from html2image import Html2Image
    hti = Html2Image()
    # hti.chrome_path = "/opt/google/chrome/chrome"
    hti.chrome_path = "/app/.apt/usr/bin/google-chrome"
    html = """<h1> An interesting title </h1> This page will be red"""
    css = "body {background: red;}"
    
    file = hti.screenshot(html_str=html, css_str=css, save_as='red_page.png')
    

    Its Not saving Image + No error logs

    @vgalin Thanks

    opened by 1Danish-00 8
  • Open multiple tabs is only supported when remote debugging is enabled

    Open multiple tabs is only supported when remote debugging is enabled

    from html2image import Html2Image
    hti = Html2Image()
    
    hti.browser.flags = ['no-sandbox']
    hti.output_path = root+'/x/'
      hti.screenshot(
        html_file=root+'/x/x.html',
        save_as='plot_'+str(i)+'.png'
    )
    
    1. Running without flags gives me the following error Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
    2. With --no-sandbox tag, I get a different error Open multiple tabs is only supported when remote debugging is enabled.

    Any idea how to fix this?

    opened by aneeshpanoli 7
  • Heroku Deployment

    Heroku Deployment

    How to deploy Django project that uses this package to take screenshots on Heroku? It throws error that it cannot find Google Chrome. Can you please help if it can be used on Heroku? @vgalin

    opened by ashutoshkrris 5
  • Cannot find images

    Cannot find images

    Hi!

    I m trying to save a local HTML file as an image but the figures inside are missing. Would you please take a look at this?

    >>> hti.screenshot(html_file='index.html', save_as='out.png') and the file hierarchy looks like this, figures the index.html is referring are stored under images/:

    drwxr-sr-x. 3 kaiwkh ivc   4096 May 25 11:10 ..
    -rw-------. 1 kaiwkh ivc  60152 May 25 11:15 out.png
    drwxr-sr-x. 2 kaiwkh ivc  49152 May 25 11:23 images
    -rw-r--r--. 1 kaiwkh ivc 317090 May 25 11:23 index.html
    drwxr-sr-x. 3 kaiwkh ivc     69 May 25 11:35 .
    
    

    The output image doesn't contain those images: image

    Thanks!

    opened by wangkaihong 5
  • Capture screenshot is disabled when remote debugging is enabled.

    Capture screenshot is disabled when remote debugging is enabled.

    hti = Html2Image(custom_flags=['--disable-remote-debugging', '--no-sandbox'])  
          
      try: 
          hti.screenshot(html_file='index1.html',
                        save_as='Image-1.jpg',
                        size=(1200, 1200)
                        )
    
          hti.screenshot(html_file='index2.html',
                          save_as='Image-2.jpg',
                          size=(1200, 1200)
        )
      except:
        print(e)
      
      return ['Image-1.jpg', 'Image-2.jpg']
    
    opened by amandugar 4
  • Getting blank png from HTML

    Getting blank png from HTML

    I tried from command line and from Python as well, I always get a blank PNG file.

    Example:

    $ hti -v -H kaya.al.html -S op.png -s 1024,768 -o ~/tmp/hti
    
    args = Namespace(browser=None, chrome_path=None, css=[], html=['kaya.al.html'], other=[], output_path='<home>/tmp/hti', quiet=False, save_as=['op.png'], size=[(1024, 768)], temp_path=None, url=[], verbose=True)
    [0217/100850.406393:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.
    [0217/100850.417779:ERROR:sandbox_linux.cc(377)] InitializeSandbox() called with multiple threads in process gpu-process.
    [0217/100850.565404:INFO:headless_shell.cc(659)] Written to file <home>/tmp/hti/op.png.
    Created 1 file(s):
    	<home>/tmp/hti/op.png
    
    
    opened by tilusnet 4
  • FileNotFoundError: [Errno 2] No such file or directory: 'google-chrome': 'google-chrome'

    FileNotFoundError: [Errno 2] No such file or directory: 'google-chrome': 'google-chrome'

    Hi All, I need your help.

    I install google chrome on server CentOs but my program notice error

    Traceback (most recent call last):
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 2464, in __call__
        return self.wsgi_app(environ, start_response)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 2450, in wsgi_app
        response = self.handle_exception(e)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask_restful/__init__.py", line 272, in error_router
        return original_handler(e)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 1867, in handle_exception
        reraise(exc_type, exc_value, tb)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/_compat.py", line 38, in reraise
        raise value.with_traceback(tb)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
        response = self.full_dispatch_request()
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask_restful/__init__.py", line 272, in error_router
        return original_handler(e)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/_compat.py", line 38, in reraise
        raise value.with_traceback(tb)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
        rv = self.dispatch_request()
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask_restful/__init__.py", line 468, in wrapper
        resp = resource(*args, **kwargs)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask/views.py", line 89, in view
        return self.dispatch_request(*args, **kwargs)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/flask_restful/__init__.py", line 583, in dispatch_request
        resp = meth(*args, **kwargs)
      File "/home/python_crawler/backend/api-python/api.py", line 129, in post
        hti = Html2Image()
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/html2image/html2image.py", line 163, in __init__
        self.chrome_path = chrome_path
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/html2image/html2image.py", line 176, in chrome_path
        self._chrome_path = _find_chrome(value)
      File "/home/python_crawler/backend/api-python/.venv/lib/python3.7/site-packages/html2image/html2image.py", line 60, in _find_chrome
        ["google-chrome", "-version"]
      File "/usr/local/lib/python3.7/subprocess.py", line 395, in check_output
        **kwargs).stdout
      File "/usr/local/lib/python3.7/subprocess.py", line 472, in run
        with Popen(*popenargs, **kwargs) as process:
      File "/usr/local/lib/python3.7/subprocess.py", line 775, in __init__
        restore_signals, start_new_session)
      File "/usr/local/lib/python3.7/subprocess.py", line 1522, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    FileNotFoundError: [Errno 2] No such file or directory: 'google-chrome': 'google-chrome'
    
    opened by tranmanhhung 4
  • Problem with sizing

    Problem with sizing

    Hello guys,

    I'm trying to resize an image, my monitor is 1920x1080p but I want to crop the image.

    For example: hti.screenshot(html_file = 'index.html', save_as = 'out.jpg', size = (600, 600))

    Where starts to crop the image size parameter? My screenshot is getting cropped badly and only is working if I set my full screen resolution.

    Kind regards

    opened by aramonpa 3
  • Couldn't find a chrome executable. please specify it yourself

    Couldn't find a chrome executable. please specify it yourself

    When this package is highly dependent on chrome executable, it should be written very clearly that where should we mention chrome executable of driver path?

    Currently it is not mentioned anywhere. can someone tell me please where can we mention our own chrome binary?

    opened by Enigmaderockz 2
  • Unable to import package htm2image

    Unable to import package htm2image

    I am writing below code from the given details but still getting error. I am using python 3.7.5 from html2image import Html2Image hti = Html2Image() hti.screenshot(url='https://www.python.org', save_as='python_org.png')

    error: Traceback (most recent call last): File "main.py", line 1, in <module> from html2image import Html2Image ModuleNotFoundError: No module named 'html2image'

    opened by Enigmaderockz 2
  • Convert HTML to image in base64

    Convert HTML to image in base64

    Hello, there is some way that html2image gets the image in memory or base64?

    That is to say that instead of saving the image in a file I generate a string with the image in base64 code

    from html2image import Html2Image
    hti = Html2Image()
    
    imgcode64 = hti.screenshot(html_str=render_template('profile/_riesgoimg.html'))
    
    print(f'Se convirtio a imagen:{imgcode64}')
    

    In this case I would expect the imgcode64 variable to have something like the following:

    imgcode64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAAoCAYAAABXadAKAAAALnRFWHRDcmVhdGlvbiBUaW1lAHZpZS4gMTkgZmViLiErkJggg=="

    Regards

    opened by DTHerrera 2
  • changes needed for Debian on GH Codespaces

    changes needed for Debian on GH Codespaces

    When attempting to build this docker image on Debian inside Github Codespaces I got an error about Poetry v1.2 being deprecated and to switch to this new recommended install method. After these changes it would build successfully.

    I'm confident the Poetry install change will work most everywhere. I'm less sure about the change for the RUN $HOME paths.

    opened by maphew 0
  • Blank white output

    Blank white output

    Hi, Can I using html2image on Ubuntu Server 20.4? I am runnig with custom parameter "hti.browser.flags = ['--no-sandbox']" but output is blank png. Without --no-sandbox parameter I get this error: Running as root without --no-sandbox is not supported. See https://crbug.com/638180.

    opened by farzadkb 1
  • python script run in docker with error:ERROR:headless_shell.cc(434)] Abnormal renderer termination.

    python script run in docker with error:ERROR:headless_shell.cc(434)] Abnormal renderer termination.

    DockerFile: ` FROM python:3.7 EXPOSE 9567 WORKDIR /app COPY . /app

    RUN echo "Acquire::Check-Valid-Until "false";\nAcquire::Check-Date "false";" | cat > /etc/apt/apt.conf.d/10no--check-valid-until RUN sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list RUN sed -i 's#http://deb.debian.org#https://mirrors.163.com#g' /etc/apt/sources.list

    RUN apt-get clean RUN apt-get update -y && apt-get install -y icc-profiles-free RUN apt-get update -y && apt-get install -y chromium

    RUN echo 'export CHROMIUM_FLAGS="$CHROMIUM_FLAGS --no-sandbox --disable-gpu"' >> /etc/chromium.d/default-flags

    RUN echo " \n =============HTML2IMAGE============= \n Welcome to the html2image CLI container ! \n Type html2image -h for help :)" >> /etc/motd RUN echo "clear" >> /root/.bashrc RUN echo "cat /etc/motd" >> /root/.bashrc

    RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple RUN pip install -r requirements.txt `

    requirements.txt ` Pillow

    pytest

    html2image `

    python script

    ` from html2image import Html2Image hti = Html2Image(custom_flags=['--no-sandbox','--disable-gpu', '--disable-software-rasterizer']) hti.screenshot(url='http://www.python.org', save_as='python_org.png', size = (1500, 13000))

    `

    error info:

    image

    [1026/042946.265913:ERROR:bus.cc(399)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory [1026/042946.266046:ERROR:bus.cc(399)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory [1026/042946.268083:WARNING:bluez_dbus_manager.cc(247)] Floss manager not present, cannot set Floss enable/disable. [1026/042946.271534:ERROR:gpu_init.cc(521)] Passthrough is not supported, GL is disabled, ANGLE is [1026/043157.712559:ERROR:headless_shell.cc(434)] Abnormal renderer termination.

    opened by taroyutao 0
  • how to plot large html visualization to image

    how to plot large html visualization to image

    Hi,

    I have a large html visualization to plot to an image. any idea how to get that to work?

    
    from html2image import Html2Image
    hti = Html2Image()
    
    #hti.browser.flags.extend(['--disable-software-rasterizer', '--disable-gpu']) <-- does not work
    hti.screenshot(
        html_file='model_plot.html',
        save_as='blue_page.png',
        size=(4000, 40000) # may need to increase to 50000 or 60000 ...
    )
    
    python convert.py
    objc[12926]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffb44709948) and /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/106.0.5249.119/Libraries/libGLESv2.dylib (0x10bc7f668). One of the two will be used. Which one is undefined.
    [1021/072630.558755:ERROR:command_buffer_proxy_impl.cc(128)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
    [1021/072634.255316:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072634.260627:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072634.260987:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072634.463683:WARNING:crash_report_exception_handler.cc(235)] UniversalExceptionRaise: (os/kern) failure (5)
    [1021/072634.479950:ERROR:gpu_process_host.cc(974)] GPU process exited unexpectedly: exit_code=5
    [1021/072634.480027:WARNING:gpu_process_host.cc(1276)] The GPU process has crashed 1 time(s)
    objc[12942]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffb44709948) and /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/106.0.5249.119/Libraries/libGLESv2.dylib (0x10706b668). One of the two will be used. Which one is undefined.
    [1021/072634.775134:WARNING:gpu_process_host.cc(997)] Reinitialized the GPU process after a crash. The reported initialization time was 225 ms
    [1021/072634.984031:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072634.986238:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072634.986510:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072635.313578:WARNING:crash_report_exception_handler.cc(235)] UniversalExceptionRaise: (os/kern) failure (5)
    [1021/072635.332282:ERROR:gpu_process_host.cc(974)] GPU process exited unexpectedly: exit_code=5
    [1021/072635.332373:WARNING:gpu_process_host.cc(1276)] The GPU process has crashed 2 time(s)
    objc[12944]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffb44709948) and /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/106.0.5249.119/Libraries/libGLESv2.dylib (0x10b811668). One of the two will be used. Which one is undefined.
    [1021/072635.624863:WARNING:gpu_process_host.cc(997)] Reinitialized the GPU process after a crash. The reported initialization time was 229 ms
    [1021/072635.803154:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072635.805006:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072635.805230:ERROR:tile_manager.cc(830)] WARNING: tile memory limits exceeded, some content may not draw
    [1021/072635.966006:WARNING:crash_report_exception_handler.cc(235)] UniversalExceptionRaise: (os/kern) failure (5)
    [1021/072635.980111:ERROR:gpu_process_host.cc(974)] GPU process exited unexpectedly: exit_code=5
    [1021/072635.980179:WARNING:gpu_process_host.cc(1276)] The GPU process has crashed 3 time(s)
    objc[12946]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffb44709948) and /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/106.0.5249.119/Libraries/libGLESv2.dylib (0x120802668). One of the two will be used. Which one is undefined.
    [1021/072636.283871:WARNING:gpu_process_host.cc(997)] Reinitialized the GPU process after a crash. The reported initialization time was 243 ms
    [1021/072636.284229:ERROR:headless_shell.cc(575)] Capture screenshot failed
    
    opened by Arnold1 1
Releases(2.0.1)
Owner
French IT Student
null
Small wrapper around 3dmol.js and html2canvas for creating self-contained HTML files that display a 3D molecular representation.

Description Small wrapper around 3dmol.js and html2canvas for creating self-contained HTML files that display a 3D molecular representation. Double cl

David Meijer 1 Dec 2, 2021
Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine.

img2dataset Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine. Also supports

Romain Beaumont 1.4k Jan 1, 2023
Create a static HTML/CSS image gallery from a bunch of images.

gallerize Create a static HTML/CSS image gallery from a bunch of images.

Jochen Kupperschmidt 19 Aug 21, 2022
An API that renders HTML/CSS content to PNG using Chromium

html_png An API that renders HTML/CSS content to PNG using Chromium Disclaimer I am not responsible if you happen to make your own instance of this AP

null 10 Aug 8, 2022
missing-pixel-filler is a python package that, given images that may contain missing data regions (like satellite imagery with swath gaps), returns these images with the regions filled.

Missing Pixel Filler This is the official code repository for the Missing Pixel Filler by SpaceML. missing-pixel-filler is a python package that, give

SpaceML 11 Jul 19, 2022
Validate arbitrary image uploads from incoming data urls while preserving file integrity but removing EXIF and unwanted artifacts and RCE exploit potential

Validate arbitrary base64-encoded image uploads as incoming data urls while preserving image integrity but removing EXIF and unwanted artifacts and mitigating RCE-exploit potential.

A3R0 1 Jan 10, 2022
A python program to generate ANSI art from images and videos

ANSI Art Generator A python program that creates ASCII art (with true color support if enabled) from images and videos Dependencies The program runs u

Pratyush Kumar 12 Nov 8, 2022
MetaStalk is a tool that can be used to generate graphs from the metadata of JPEG, TIFF, and HEIC images

MetaStalk About MetaStalk is a tool that can be used to generate graphs from the metadata of JPEG, TIFF, and HEIC images, which are tested. More forma

Cyb3r Jak3 1 Jul 5, 2021
Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures.

WADs Out For [The] Ladies Simple Python / ImageMagick script to package images into WAD3s for use as GoldSrc textures. Development mostly focused on L

null 5 Apr 9, 2022
QR code python application which can read(decode) and generate(encode) QR codes.

QR Code Application This is a basic QR Code application. Using this application you can generate QR code for you text/links. Using this application yo

Atharva Parkhe 1 Aug 9, 2022
Seaborn-image is a Python image visualization library based on matplotlib and provides a high-level API to draw attractive and informative images quickly and effectively.

seaborn-image: image data visualization Description Seaborn-image is a Python image visualization library based on matplotlib and provides a high-leve

null 48 Jan 5, 2023
DrawBot is a powerful, free application for macOS that invites you to write Python scripts to generate two-dimensional graphics

DrawBot is a powerful, free application for macOS that invites you to write Python scripts to generate two-dimensional graphics.

Frederik Berlaen 344 Jan 6, 2023
Hello, this project is an example of how to generate a QR Code using python 😁

Hello, this project is an example of how to generate a QR Code using python ??

Davi Antonaji 2 Oct 12, 2021
Python script to generate vector graphics of an oriented lattice unit cell

unitcell Python script to generate vector graphics of an oriented lattice unit cell Examples unitcell --type hexagonal --eulers 12 23 34 --axes --crys

Philip Eisenlohr 2 Dec 10, 2021
ModernGL is a python wrapper over OpenGL 3.3+ core

ModernGL is a python wrapper over OpenGL 3.3+ core that simplifies the creation of simple graphics applications like scientific simulations, games or user interface

ModernGL 1.4k Jan 1, 2023
🎨 Generate and change color-schemes on the fly.

Generate and change color-schemes on the fly. Pywal is a tool that generates a color palette from the dominant colors in an image. It then applies the

dylan 6.9k Jan 3, 2023
A script to generate a profile picture and a banner that show the same image on Discord.

Discord profile picture & banner generator A script to generate a profile picture and a banner that show the same image on Discord. Installation / Upd

Victor B. 9 Nov 27, 2022
Generate your own QR Code and scan it to see the results! Never use it for malicious purposes.

QR-Code-Generator-Python Choose the name of your generated QR .png file. If it happens to open the .py file (the application), there are specific comm

null 1 Dec 23, 2021
With this simple py script you will be able to get all the .png from a folder and generate a yml for Oraxen

Oraxen-item-to-yml With this simple py script you will be able to get all the .png from a folder and generate a yml for Oraxen How to use Install the

Akex 1 Dec 29, 2021