farm-recolor / matchCollection.py
vettorazi's picture
added training and new endpoint
d0d80ec
raw
history blame
1.05 kB
import json
import numpy as np
def load_palettes(filepath):
with open(filepath, 'r') as file:
return json.load(file)
def hex_to_rgb(hex_color):
hex_color = hex_color.lstrip('#')
return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
def rgb_distance(color1, color2):
return np.sqrt(sum((a - b) ** 2 for a, b in zip(color1, color2)))
def predict_palette(collection_name, hex_color, filepath='output.json'):
palettes_data = load_palettes(filepath)
target_rgb = hex_to_rgb(hex_color)
min_distance = float('inf')
best_palette = None
for collection in palettes_data['collections']:
if collection['collection'] == collection_name:
for palette in collection['colors']:
for color in palette:
distance = rgb_distance(target_rgb, hex_to_rgb(color))
if distance < min_distance:
min_distance = distance
best_palette = palette
return best_palette