Advanced color manipulation library for gradients and conversions
Project description
Chromatica - Advanced Color Manipulation Library
Chromatica is a powerful Python library for advanced color manipulation, gradient generation, and color space conversions. Designed for graphics programming, data visualization, and image processing, Chromatica provides intuitive tools for working with colors in various formats and creating stunning gradients with mathematical precision.
Key Features
- Multi-format Color Support: Work with RGB, HSV, HSL, CMYK, RGBA, and more
- Advanced Gradient Generation: Create linear, radial, and angular gradients
- Color Space Conversions: Convert between color spaces with precision
- Vectorized Operations: Optimized numpy-based operations for performance
- PIL/Pillow Integration: Seamlessly work with images
- Mathematical Precision: Unit-tested color transformations
Installation
pip install chromatica
Quick Start
Color Conversion
from chromatica import convert, ColorRGB, ColorHSV
# Simple color conversion
rgb = (255, 0, 0) # Red
hsv = convert(rgb, from_space='rgb', to_space='hsv')
print(f"Red in HSV: {hsv}") # (0, 100, 100)
# Using color classes
red_rgb = ColorRGB((255, 0, 0))
red_hsv = red_rgb.to_hsv()
print(f"Red as HSV object: {red_hsv}") # ColorHSV((0, 100, 100))
Gradient Generation
from chromatica import Gradient1D, Gradient2D
# Create a 1D gradient from red to blue
gradient_1d = Gradient1D.from_colors(
color1=(255, 0, 0),
color2=(0, 0, 255),
steps=100
)
# Create a 2D gradient from four corner colors
gradient_2d = Gradient2D.from_colors(
color_tl=(255, 0, 255), # Top-left: pink
color_tr=(255, 255, 0), # Top-right: yellow
color_bl=(255, 0, 128), # Bottom-left: deep pink
color_br=(255, 128, 0), # Bottom-right: orange
width=500,
height=500
)
# Save as image
from PIL import Image
Image.fromarray(gradient_2d.colors.astype(np.uint8), mode='RGB').save('gradient.png')
Radial Gradient
from chromatica import radial_gradient
import numpy as np
# Create radial gradient
gradient = radial_gradient(
color1=(0, 0, 255, 0), # Blue with full transparency
color2=(0, 0, 0, 255), # Black with full opacity
height=500,
width=500,
center=(250, 250),
radius=125,
color_mode='RGBA'
)
# Display
Image.fromarray(gradient.astype(np.uint8), mode='RGBA').show()
Documentation
Core Components
-
Color Classes:
ColorRGB,ColorHSV,ColorHSL,ColorRGBA, etc.- Convert between color spaces
- Normalize values and clamp ranges
-
Gradient Generators:
Gradient1D: Linear color gradientsGradient2D: 2D color fields from corner colorsradial_gradient: Radial color transitions
-
Color Space Conversions:
- Convert between RGB, HSV, HSL
- Support for integer, float, and PIL-specific formats
- Vectorized numpy operations
Advanced Usage
# Create gradient with custom easing function
import numpy as np
gradient = Gradient1D.from_colors(
color1=(255, 0, 0),
color2=(0, 0, 255),
steps=100,
unit_transform=lambda x: (1 - np.cos(x * np.pi)) / 2 # Smooth easing
)
# Angular gradient wrapping
rotated = gradient.wrap_around(
width=500,
height=500,
center=(250, 250),
angle_start=0,
angle_end=2 * np.pi
)
Examples
Check out the examples in the examples directory to see Chromatica in action:
- Basic Gradient
- Radial Transparency
- Color Space Conversions
- Animated Gradients (requires matplotlib)
Contributing
We welcome contributions! Please see our Contribution Guidelines for details.
License
Chromatica is released under the MIT License. See LICENSE for details.
Project by Grayjou
GitHub | Email
Inspired by the beauty of color and light
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chromatica-0.1.0.tar.gz.
File metadata
- Download URL: chromatica-0.1.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d1d6a6c10e70517ae935134ecd321c04178b3eeed43019772f53ed99e23dd9d
|
|
| MD5 |
c8fc36030790d0ae6792294b7edf334d
|
|
| BLAKE2b-256 |
86e2cd68b5f9683030a96ac00e77aa354bc7a49b321d822eae9d569d5f402e43
|
File details
Details for the file chromatica-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chromatica-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c92eb893250f0f481e5e31dc8ef7bfdff00cf38b838785ae985979ab0dca2a39
|
|
| MD5 |
2efc8503581bcce38bf3c9687fe43ad0
|
|
| BLAKE2b-256 |
52d952d50084665e24eeaf38ede5845ed2c2625b3c41641ade37e20e30216b6d
|