Skip to main content

Match the colors of an image to a palette

Project description

PyPi version PyPI - Python Version CircleCI Coveralls Codacy branch grade

Normal Catppuccin Macchiato Dracula Gruvbox

Match the colors of an image to a palette

Installation

pip install palettipy

Example

example.py

import os
import sys
import time

from PIL import Image

from palettipy import palettes_loader, palettipy_image
from palettipy.palette import Palette


def main(args: list[str], palettes_path: str = "palettes"):
    if len(args) <= 0 or len(args) >= 3:
        print("Usage: example.py path/to/image [palette name]")
        sys.exit(1)

    print(args)

    image_path = args[0]
    if not os.path.exists(image_path):
        print(f'Image "{image_path}" does not exist')
        sys.exit(1)

    palettes = palettes_loader.load_palettes(palettes_path)

    palette_name = palettes[0].name
    if len(args) > 1:
        palette_name = args[1]
        if palette_name not in [_p.name for _p in palettes]:
            print(f'Palette "{palette_name}" does not exist')
            sys.exit(1)

    start = time.time()

    palette: Palette = list(filter(lambda p: (p.name == palette_name), palettes))[0]
    image = Image.open(image_path)

    image_result = Image.fromarray(palettipy_image(palette, image))
    image_result.save("output.png")

    palette.log(f"Done in {(time.time() - start):.3f}s")
    sys.exit(0)


if __name__ == "__main__":
    main(sys.argv[1:])
python example.py path/to/image "Catppuccin Mocha"

Adding a palette

Single

To add a new palette, simply create a file in palettes directory like below

Rainbow.txt

#ff6b6b
#ffd93d
#6bcb77
#4d96ff

Variants

If you have multiple variants of a palette, just create a subfolder under palettes with all its variants in it

Rainbow/Pastel.txt

#ff6b6b
#ffd93d
#6bcb77
#4d96ff

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

palettipy-0.0.1.tar.gz (13.7 MB view details)

Uploaded Source

Built Distribution

palettipy-0.0.1-py3-none-any.whl (9.6 MB view details)

Uploaded Python 3

File details

Details for the file palettipy-0.0.1.tar.gz.

File metadata

  • Download URL: palettipy-0.0.1.tar.gz
  • Upload date:
  • Size: 13.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for palettipy-0.0.1.tar.gz
Algorithm Hash digest
SHA256 4e660a1fa7ef324eb2df34a6c395faf64e266ea84e3594b28405da5bd2323b9a
MD5 e049f1c3e3e809501688ae4e10d6f665
BLAKE2b-256 ebbcccef7d51cfe66a69171dcae5625ece568c553fa0b5370d7c0bb609804f1d

See more details on using hashes here.

File details

Details for the file palettipy-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: palettipy-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for palettipy-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 330adf518811ea0599902832ae1ebdf16bfb2a028546e3cf80bfb81a468742a6
MD5 9bb3a81034f2a79e0d9697d044baabf8
BLAKE2b-256 54959e3d7809a88b0022a614816dedb971774983480d2fb53508c45a2d150cfd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page