Last active
January 15, 2022 16:11
-
-
Save facelessuser/26ff61052f1e4a180d2f98a499d08595 to your computer and use it in GitHub Desktop.
Okfit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from coloraide.distance.delta_e_76 import DE76 | |
from coloraide.gamut.fit_lch_chroma import LchChroma | |
from coloraide import Color as OrigColor | |
class DEOK(DE76): | |
"""Delta E OK class.""" | |
NAME = "ok" | |
SPACE = "oklab" | |
@classmethod | |
def distance(cls, color, sample, scalar=1, **kwargs): | |
""" | |
Delta E OK color distance formula. | |
This just uses simple Euclidean distance in the Oklab color space. | |
""" | |
# Equation (1) | |
return scalar * super().distance(color, sample) | |
class OklchChroma(LchChroma): | |
"""Lch chroma gamut mapping class.""" | |
NAME = "oklch-chroma" | |
EPSILON = 0.0001 | |
LIMIT = 0.02 | |
DE = "ok" | |
SPACE = "oklch" | |
SPACE_COORDINATE = "{}.chroma".format(SPACE) | |
class Color(OrigColor): | |
"""New Color.""" | |
for c in Color("color(rec2020 0 0 0)").steps("color(rec2020 0 0 1)", steps=22, space='rec2020'): | |
print(c.convert('srgb', fit="oklch-chroma").to_string()) | |
for c in Color("color(rec2020 0 0 0)").steps("color(rec2020 0 0 1)", steps=22, space='rec2020'): | |
print(c.convert('srgb', fit="lch-chroma").to_string()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment