m3g4p0p commited on
Commit
ec7ee9c
·
1 Parent(s): f6d65be

add colorutils module

Browse files
Files changed (4) hide show
  1. myapp/app.py +2 -1
  2. myapp/colorutils.py +33 -0
  3. myapp/palette.py +1 -16
  4. myapp/pall_app.py +2 -1
myapp/app.py CHANGED
@@ -10,7 +10,8 @@ from huggingface_hub import InferenceClient
10
  from PIL import Image
11
  from qrcode_artistic import write_artistic
12
 
13
- from myapp.palette import array_to_hex, extract_color_clusters, sort_color_clusters
 
14
 
15
  try:
16
  import dotenv
 
10
  from PIL import Image
11
  from qrcode_artistic import write_artistic
12
 
13
+ from myapp.colorutils import array_to_hex
14
+ from myapp.palette import extract_color_clusters, sort_color_clusters
15
 
16
  try:
17
  import dotenv
myapp/colorutils.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import colorsys
2
+ from typing import NamedTuple
3
+
4
+ import numpy as np
5
+
6
+
7
+ class HSVUpdate(NamedTuple):
8
+ h: int = 0
9
+ s: int = 0
10
+ v: int = 0
11
+
12
+ def apply(self, color: np.ndarray):
13
+ hsv = colorsys.rgb_to_hsv(*color / 255)
14
+ tmp = np.add(hsv, self).clip(0, 1)
15
+ rgb = colorsys.hsv_to_rgb(*tmp)
16
+
17
+ return np.array(rgb) * 255
18
+
19
+
20
+ def get_hsv_value(cluster: np.ndarray):
21
+ return colorsys.rgb_to_hsv(*cluster / 255)[2]
22
+
23
+
24
+ def add_hsv_saturation(cluster: np.ndarray, delta: float):
25
+ h, s, v = colorsys.rgb_to_hsv(*cluster / 255)
26
+ s = max(0, min(1, s + delta))
27
+
28
+ return np.array(colorsys.hsv_to_rgb(h, s, v)) * 255
29
+
30
+
31
+ def array_to_hex(values: np.ndarray):
32
+ values = np.round(values).astype(int)
33
+ return "#" + ("{:02X}" * len(values)).format(*values)
myapp/palette.py CHANGED
@@ -1,20 +1,10 @@
1
- import colorsys
2
  import itertools
3
 
4
  import numpy as np
5
  from PIL import Image
6
  from sklearn.cluster import KMeans
7
 
8
-
9
- def get_hsv_value(cluster: np.ndarray):
10
- return colorsys.rgb_to_hsv(*cluster / 255)[2]
11
-
12
-
13
- def add_hsv_saturation(cluster: np.ndarray, delta: float):
14
- h, s, v = colorsys.rgb_to_hsv(*cluster / 255)
15
- s = max(0, min(1, s + delta))
16
-
17
- return np.array(colorsys.hsv_to_rgb(h, s, v)) * 255
18
 
19
 
20
  def extract_color_clusters(image_array: np.ndarray | Image.Image, n_clusters=2):
@@ -49,8 +39,3 @@ def generate_palette_image(k_means: KMeans, size=40, shades=(0.0,)):
49
  image.paste(part, position)
50
 
51
  return image
52
-
53
-
54
- def array_to_hex(values: np.ndarray):
55
- values = np.round(values).astype(int)
56
- return "#" + ("{:02X}" * len(values)).format(*values)
 
 
1
  import itertools
2
 
3
  import numpy as np
4
  from PIL import Image
5
  from sklearn.cluster import KMeans
6
 
7
+ from myapp.colorutils import add_hsv_saturation, get_hsv_value
 
 
 
 
 
 
 
 
 
8
 
9
 
10
  def extract_color_clusters(image_array: np.ndarray | Image.Image, n_clusters=2):
 
39
  image.paste(part, position)
40
 
41
  return image
 
 
 
 
 
myapp/pall_app.py CHANGED
@@ -3,7 +3,8 @@ from contextlib import ExitStack
3
  import gradio as gr
4
  import numpy as np
5
 
6
- from myapp.palette import array_to_hex, extract_color_clusters, iter_color_shades
 
7
 
8
  with gr.Blocks() as demo:
9
  image = gr.Image("vulture.webp")
 
3
  import gradio as gr
4
  import numpy as np
5
 
6
+ from myapp.colorutils import array_to_hex
7
+ from myapp.palette import extract_color_clusters, iter_color_shades
8
 
9
  with gr.Blocks() as demo:
10
  image = gr.Image("vulture.webp")