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
3D Reconstruction Software

Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision Photogrammetric Computer Vision framework. Learn more details abou

AliceVision 8.7k Jan 02, 2023
Viewer for NFO files

NFO Viewer NFO Viewer is a simple viewer for NFO files, which are "ASCII" art in the CP437 codepage. The advantages of using NFO Viewer instead of a t

Osmo Salomaa 114 Dec 29, 2022
Rembg is a tool to remove images background.

Rembg is a tool to remove images background.

Daniel Gatis 7.8k Jan 05, 2023
📷 Python package and CLI utility to create photo mosaics.

📷 Python package and CLI utility to create photo mosaics.

Loic Coyle 7 Oct 29, 2022
Photini - A free, easy to use, digital photograph metadata (Exif, IPTC, XMP) editing application for Linux, Windows and MacOS.

A free, easy to use, digital photograph metadata (Exif, IPTC, XMP) editing application for Linux, Windows and MacOS. "Metadata" is said to mea

Jim Easterbrook 120 Dec 20, 2022
Unique image & metadata generation using weighted layer collections.

nft-generator-py nft-generator-py is a python based NFT generator which programatically generates unique images using weighted layer files. The progra

Jonathan Becker 243 Dec 31, 2022
Python QR Code image generator

Pure python QR Code generator Generate QR codes. For a standard install (which will include pillow for generating images), run: pip install qrcode[pil

Lincoln Loop 3.5k Dec 31, 2022
Simple utility to tinker with OPlus images

OPlus image utilities Prerequisites Linux running kernel 5.4 or up (check with uname -r) Image rebuilding Used to rebuild read-only erofs images into

Wiley Lau 15 Dec 28, 2022
Gaphor is the simple modeling tool

Gaphor Gaphor is a UML and SysML modeling application written in Python. It is designed to be easy to use, while still being powerful. Gaphor implemen

Gaphor 1.3k Dec 31, 2022
Pixel Brush Processing Unit

Pixel Brush Processing Unit The Pixel Brush Processing Unit (PBPU for short) is a simple 4-Bit CPU I designed in Logisim while I was still in school a

Pixel Brush 2 Nov 03, 2022
⚡ZenGL is a minimalist Python module providing exactly one way to render scenes with OpenGL.

ZenGL is a minimalist Python module providing exactly one way to render scenes with OpenGL.

Szabolcs Dombi 133 Dec 17, 2022
Remove Background from Image With Python

Install Library pypi $ pip3 install xremovebg

krypton 4 May 26, 2022
A Python Script to convert Normal PNG Image to Apple iDOT PNG Image.

idot-png-encoder A Python Script to convert Normal PNG Image to Apple iDOT PNG Image (Multi-threaded Decoding PNG). Usage idotpngencoder.py -i inputf

Lrdcq 2 Feb 17, 2022
Plots is a graph plotting app for GNOME.

Plots is a graph plotting app for GNOME. Plots makes it easy to visualise mathematical formulae. In addition to basic arithmetic operations, it supports trigonometric, hyperbolic, exponential and log

Alex Huntley 138 Dec 14, 2022
NFT collection generator. Generates layered images

NFT collection generator Generates layered images, whole collections. Provides additional functionality. Repository includes three scripts generate.py

Gleb Gonchar 10 Nov 15, 2022
Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

Pyconvert is a python script that you can use to convert image files to another image format! (eg. PNG to ICO)

1 Jan 16, 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

1 Dec 23, 2021
ProsePainter combines direct digital painting with real-time guided machine-learning based image optimization.

ProsePainter Create images by painting with words. ProsePainter combines direct digital painting with real-time guided machine-learning based image op

Morphogen 276 Dec 17, 2022
Sombra is simple Raytracer written in pure Python.

Sombra Sombra is simple Raytracer written in pure Python. It's main purpose is to help understand how raytracing works with a clean code. If you are l

Hernaldo Jesus Henriquez Nuñez 10 Jul 16, 2022
Program to export all new icons from the latest Fortnite patch

Assets Exporter This program allows you to generate all new icons of a patch in png! Requierements Python =3.8 (installed on your computer) If you wa

ᴅᴊʟᴏʀ3xᴢᴏ 6 Jun 24, 2022