chandrujobs commited on
Commit
f9defb5
·
verified ·
1 Parent(s): c1dc946

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -17
app.py CHANGED
@@ -4,9 +4,9 @@ import numpy as np
4
  import random
5
  from io import BytesIO
6
 
7
- # Function to enhance contrast of the image
8
  def enhance_contrast(img):
9
- return img # placeholder for actual contrast enhancement logic
10
 
11
  # Function to detect dominant colors
12
  def get_dominant_colors(image, n_colors=6):
@@ -35,7 +35,7 @@ def generate_harmonies(colors):
35
  }
36
  return harmonies
37
 
38
- # Function to create a LinkedIn-friendly color palette description with CSS code
39
  def create_palette_description(colors):
40
  descriptions = [
41
  "A vibrant palette for branding and marketing.",
@@ -44,20 +44,13 @@ def create_palette_description(colors):
44
  "Soft and neutral tones, ideal for elegant branding."
45
  ]
46
  chosen_description = random.choice(descriptions)
47
-
48
- # Generate the HTML palette
49
  palette_html = f"<h4>{chosen_description}</h4><div style='display:flex; flex-wrap:wrap;'>"
50
- css_code = "/* Color Palette CSS */\n"
51
- for i, color in enumerate(colors):
52
  hex_color = rgb_to_hex(color)
53
  palette_html += f"<div style='width: 100px; height: 50px; background-color: {hex_color}; margin: 5px;'></div>"
54
  palette_html += f"<div style='padding: 15px;'>HEX: {hex_color}</div>"
55
- # Add the CSS code for each color
56
- css_code += f".color-{i} {{ background-color: {hex_color}; }}\n"
57
-
58
  palette_html += "</div>"
59
-
60
- return palette_html, css_code
61
 
62
  # Function to generate a downloadable palette image
63
  def generate_palette_image(colors):
@@ -72,23 +65,34 @@ def generate_palette_image(colors):
72
 
73
  return palette_img # Return PIL image directly
74
 
 
 
 
 
 
 
 
 
75
  # Main function to generate palette and display LinkedIn-friendly results
76
  def generate_palette(image_path):
77
  img = Image.open(image_path)
78
 
79
- # Enhance the contrast
80
  img = enhance_contrast(img)
81
 
82
  # Extract dominant colors
83
  n_colors = 6
84
  colors = get_dominant_colors(img, n_colors)
85
 
86
- # Convert colors to HEX and create palette description with CSS
87
- palette_html, css_code = create_palette_description(colors)
88
 
89
  # Generate palette image for download
90
  palette_img = generate_palette_image(colors)
91
 
 
 
 
92
  return palette_html, palette_img, css_code
93
 
94
  # Gradio Interface
@@ -111,12 +115,12 @@ with gr.Blocks() as interface:
111
  with gr.Column():
112
  palette_output = gr.HTML(label="Generated Color Palette")
113
  palette_image_output = gr.Image(label="Downloadable Palette Image")
114
- css_code_output = gr.Code(label="Generated CSS Code") # Display generated CSS code
115
 
116
  submit_btn.click(gradio_interface, inputs=[image_input], outputs=[
117
  palette_output, palette_image_output, css_code_output])
118
 
119
- # Clear button now resets the image input and clears all outputs
120
  clear_btn.click(lambda: [None, None, None, None], outputs=[
121
  image_input, palette_output, palette_image_output, css_code_output])
122
 
 
4
  import random
5
  from io import BytesIO
6
 
7
+ # Function to enhance contrast of the image (placeholder for future enhancement)
8
  def enhance_contrast(img):
9
+ return img # Currently, just returns the original image
10
 
11
  # Function to detect dominant colors
12
  def get_dominant_colors(image, n_colors=6):
 
35
  }
36
  return harmonies
37
 
38
+ # Function to create a LinkedIn-friendly color palette description
39
  def create_palette_description(colors):
40
  descriptions = [
41
  "A vibrant palette for branding and marketing.",
 
44
  "Soft and neutral tones, ideal for elegant branding."
45
  ]
46
  chosen_description = random.choice(descriptions)
 
 
47
  palette_html = f"<h4>{chosen_description}</h4><div style='display:flex; flex-wrap:wrap;'>"
48
+ for color in colors:
 
49
  hex_color = rgb_to_hex(color)
50
  palette_html += f"<div style='width: 100px; height: 50px; background-color: {hex_color}; margin: 5px;'></div>"
51
  palette_html += f"<div style='padding: 15px;'>HEX: {hex_color}</div>"
 
 
 
52
  palette_html += "</div>"
53
+ return palette_html
 
54
 
55
  # Function to generate a downloadable palette image
56
  def generate_palette_image(colors):
 
65
 
66
  return palette_img # Return PIL image directly
67
 
68
+ # Function to generate the CSS code for the color palette
69
+ def generate_css_code(colors):
70
+ css_code = "/* Color Palette CSS */\n"
71
+ for i, color in enumerate(colors):
72
+ hex_color = rgb_to_hex(color)
73
+ css_code += f".color-{i} {{ background-color: {hex_color}; }}\n"
74
+ return css_code
75
+
76
  # Main function to generate palette and display LinkedIn-friendly results
77
  def generate_palette(image_path):
78
  img = Image.open(image_path)
79
 
80
+ # Enhance the contrast (optional placeholder)
81
  img = enhance_contrast(img)
82
 
83
  # Extract dominant colors
84
  n_colors = 6
85
  colors = get_dominant_colors(img, n_colors)
86
 
87
+ # Convert colors to HEX and create palette description
88
+ palette_html = create_palette_description(colors)
89
 
90
  # Generate palette image for download
91
  palette_img = generate_palette_image(colors)
92
 
93
+ # Generate CSS code for the palette
94
+ css_code = generate_css_code(colors)
95
+
96
  return palette_html, palette_img, css_code
97
 
98
  # Gradio Interface
 
115
  with gr.Column():
116
  palette_output = gr.HTML(label="Generated Color Palette")
117
  palette_image_output = gr.Image(label="Downloadable Palette Image")
118
+ css_code_output = gr.Textbox(label="Generated CSS Code", lines=6) # Use Textbox to display CSS code
119
 
120
  submit_btn.click(gradio_interface, inputs=[image_input], outputs=[
121
  palette_output, palette_image_output, css_code_output])
122
 
123
+ # The Clear button now resets the image input and clears all outputs
124
  clear_btn.click(lambda: [None, None, None, None], outputs=[
125
  image_input, palette_output, palette_image_output, css_code_output])
126