All Articles Kinsa Creative

Generate Web Icons in Python with PIL

Referencing this article regarding formats and sizes.

Requires PIL. Create a virtual env in a working directory and install:

python -m venv .venv
source .venv/bin/activate
pip install pillow

In Sketch, or other vector editing application, from a 512px square artboard, export a SVG as icon.svg

Export again as a 512px square PNG, naming the file icon-512.png

Noting where those files are saved, in a Python shell, run:

from PIL import Image
logo = Image.open('/path/to/icon-512.png')
logo.resize((32,32)).save('/path/to/favicon.ico',format='ICO')
logo.resize((180,180)).save('/path/to/apple-touch-icon.png',format='png')
logo.resize((192,192)).save('/path/to/icon-192.png',format='png')

Move all the images to the root of the website.

Create a new file at the root of the website named manifest.webmanifest with the content:

{
  "icons": [
    { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
    { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" }
  ]
}

Load the images, in the head of the document add:




Feedback?

Email us at enquiries@kinsa.cc.