Skip to main content

colorgram.py is a Python library that lets you extract colors from images. Compared to other libraries, the colorgram algorithm’s results are more intense.

colorgram.py is a port of colorgram.js, a JavaScript library written by GitHub user @darosh. The goal is to have 100% accuracy to the results of the original library (a goal that is met). I decided to port it since I much prefer the results the colorgram algorithm gets over those of alternative libraries - have a look in the next section.

Results

Results of colorgram.py on a 512x512 image

Time-wise, an extraction of a 512x512 image takes about 0.66s (another popular color extraction library, Color Thief, takes about 1.05s).

Installation

You can install colorgram.py with pip, as following:

pip install colorgram.py

How to use

Using colorgram.py is simple. Mainly there’s only one function you’ll need to use - colorgram.extract.

Example

import colorgram

# Extract 6 colors from an image.
colors = colorgram.extract('sweet_pic.jpg', 6)

# colorgram.extract returns Color objects, which let you access
# RGB, HSL, and what proportion of the image was that color.
first_color = colors[0]
rgb = first_color.rgb # e.g. (255, 151, 210)
hsl = first_color.hsl # e.g. (230, 255, 203)
proportion  = first_color.proportion # e.g. 0.34

# RGB and HSL are named tuples, so values can be accessed as properties.
# These all work just as well:
red = rgb[0]
red = rgb.r
saturation = hsl[1]
saturation = hsl.s

colorgram.extract(image, number_of_colors)

Extract colors from an image. image may be either a path to a file, a file-like object, or a Pillow Image object. The function will return a list of number_of_colors Color objects.

colorgram.Color

A color extracted from an image. Its properties are:

  • Color.rgb - The color represented as a namedtuple of RGB from 0 to 255, e.g. (r=255, g=151, b=210).

  • Color.hsl - The color represented as a namedtuple of HSL from 0 to 255, e.g. (h=230, s=255, l=203).

  • Color.proportion - The proportion of the image that is in the extracted color from 0 to 1, e.g. 0.34.

Sorting by HSL

Something the original library lets you do is sort the colors you get by HSL. In actuality, though, the colors are only sorted by hue (as of colorgram.js 0.1.5), while saturation and lightness are ignored. To get the corresponding result in colorgram.py, simply do:

colors.sort(key=lambda c: c.hsl.h)
# or...
sorted(colors, key=lambda c: c.hsl.h)

Contact

If you find a bug in the colorgram.py, or if there’s a feature you would like to be added, please open an issue on GitHub.

If you have a question about the library, or if you’d just like to talk about, well, anything, that’s no problem at all. You can reach me in any of these ways:

To get a quick answer, Twitter is your best bet.

Enjoy!

Release files for colorgram.py 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for colorgram.py 1.2.0
File Size Uploaded
colorgram.py-1.2.0.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for colorgram.py 1.2.0
File Interpreter ABI Platform
colorgram.py-1.2.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 12.1 kB

Release files / colorgram.py-1.2.0.tar.gz

Download URL colorgram.py-1.2.0.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e77766a5f9de7207bdef8f1c22a702cbf09630eae3bc46a450b9d9f12a7bfdbf
BLAKE2b-256 checksum
How to use checksums
41528a6d33deace24a123881a4779467fbf18f8858368c09ff0eb9d6846b8bdd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.2

Release files / colorgram.py-1.2.0-py2.py3-none-any.whl

Download URL colorgram.py-1.2.0-py2.py3-none-any.whl
Size 6.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e990769fa6df7261a450c7d5bef3a1a062f09ba1214bff67b4d6f02970a1a27b
BLAKE2b-256 checksum
How to use checksums
46be4e6d6e89c3239108709bd4bcbe95777c715510023c8d394bdffebf4596fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.2

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

1 release file

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page