Skip to content

Commit

Permalink
add filter
Browse files Browse the repository at this point in the history
  • Loading branch information
tyshoe committed Mar 20, 2024
1 parent 5496422 commit f3af86d
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 10 deletions.
43 changes: 35 additions & 8 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,33 @@ def __init__(self):
self.canvas_width = 0
self.canvas_height = 0

self.menu = Menu(self, self.channels_var, self.r_var, self.g_var, self.b_var, self.a_var, self.manipulate_image, import_image=self.import_image)
self.menu = Menu(self,
self.r_min_var, self.r_max_var, self.g_min_var, self.g_max_var, self.b_min_var, self.b_max_var, # current filters
self.r_var, self.g_var, self.b_var, self.a_var, # current rgba
self.channels_var, # current channel
self.manipulate_image, import_image=self.import_image # functions
)
# print(self.alpha_var.get())

# run
self.mainloop()

def init_parameters(self):
# current filter
self.r_min_var = IntVar(value=0)
self.r_max_var = IntVar(value=0)
self.g_min_var = IntVar(value=0)
self.g_max_var = IntVar(value=0)
self.b_min_var = IntVar(value=0)
self.b_max_var = IntVar(value=0)

# current rgba
self.r_var = IntVar(value=0)
self.g_var = IntVar(value=0)
self.b_var = IntVar(value=0)
self.a_var = DoubleVar(value=0.0)

# current channel
self.channels_var = StringVar(value = CHANNELS[0])

def import_image(self, path):
Expand All @@ -53,7 +68,13 @@ def import_image(self, path):
self.image_tk = ImageTk.PhotoImage(self.image)

self.image_output = ImageOutput(self, self.resize_image)
self.menu = Menu(self, self.channels_var, self.r_var, self.g_var, self.b_var, self.a_var, self.manipulate_image, import_image=self.import_image, export_image=self.export_image)
Menu(self,
self.r_min_var, self.r_max_var, self.g_min_var, self.g_max_var, self.b_min_var, self.b_max_var, # current filters
self.r_var, self.g_var, self.b_var, self.a_var, # current rgba
self.channels_var, # current channel
self.manipulate_image, import_image=self.import_image, export_image=self.export_image # functions
)


def manipulate_image(self, *args):
self.image = self.original
Expand All @@ -70,15 +91,21 @@ def identify_channels(image):
return False

if self.image:
r_min_val, r_max_val = 0, 255 #TODO: set this up
g_min_val, g_max_val = 0, 255
b_min_val, b_max_val = 0, 255

# Function to convert a pixel to a new pixel
def convert_pixel(pixel):
nonlocal r_min_val, r_max_val, g_min_val, g_max_val, b_min_val, b_max_val
# print(r_min_val, r_max_val)
if within_range(pixel, (r_min_val, r_max_val), (g_min_val, g_max_val), (b_min_val, b_max_val)):

# r_min = int(str(self.r_min_var))
# r_max = int(str(self.r_max_var))
# g_min = int(str(self.g_min_var))
# g_max = int(str(self.g_max_var))
# b_min = int(str(self.b_min_var))
# b_max = int(str(self.b_max_var))

if within_range(pixel,
(self.r_min_var.get(), self.r_max_var.get()),
(self.g_min_var.get(), self.g_max_var.get()),
(self.b_min_var.get(), self.b_max_var.get())):
# Add the specified values to the R, G, B, and A channels
r, g, b, a = pixel
r = self.r_var.get()
Expand Down
18 changes: 17 additions & 1 deletion menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,25 @@


class Menu(ctk.CTkTabview):
def __init__(self, parent, channels_var, r_var, g_var, b_var, a_var, manipulate_image, import_image='', export_image=''):
def __init__(self, parent,
r_min_var, r_max_var, g_min_var, g_max_var, b_min_var, b_max_var, # current filters
r_var, g_var, b_var, a_var, # current rgba
channels_var, # current channel
manipulate_image, import_image='', export_image='' # functions
):

super().__init__(master=parent)
self.grid(column=0, row=0, sticky='nsew', padx=10, pady=10)

# create tabs
self.add("Import")
self.add("Filter")
self.add("Edit")
self.add("Export")

# Widgets
ImportFrame(self.tab('Import'), import_image)
FilterFrame(self.tab('Filter'), r_min_var, r_max_var, g_min_var, g_max_var, b_min_var, b_max_var)
EditFrame(self.tab('Edit'), channels_var, r_var, g_var, b_var, a_var, manipulate_image)
ExportFrame(self.tab('Export'), export_image)

Expand All @@ -26,6 +34,14 @@ def __init__(self, parent, import_image):
self.pack(expand=True, fill='both')

OpenButton(self, import_image)


class FilterFrame(ctk.CTkFrame):
def __init__(self, parent, r_min_var, r_max_var, g_min_var, g_max_var, b_min_var, b_max_var):
super().__init__(master=parent, fg_color='transparent')
self.pack(expand=True, fill='both')

FilterPanel(self, r_min_var, r_max_var, g_min_var, g_max_var, b_min_var, b_max_var)


class EditFrame(ctk.CTkFrame):
Expand Down
41 changes: 40 additions & 1 deletion panels.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,4 +150,43 @@ def __init__(self, parent, r_var, g_var, b_var, a_var, manipulate_image):
# Create a button to apply color substitution
apply_button = ctk.CTkButton(self, text="Apply color", command=manipulate_image)
apply_button.grid(column=0, row=8, columnspan=2, pady=(0, 10))




class FilterPanel(Panel):
def __init__(self, parent, r_min_var, r_max_var, g_min_var, g_max_var, b_min_var, b_max_var):
super().__init__(parent=parent)
self.pack(fill='x', pady=4)

self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=2, uniform='a')
self.columnconfigure(1, weight=2, uniform='a')
self.columnconfigure(2, weight=2, uniform='a')

label = ctk.CTkLabel(self, text="Channel")
label.grid(column=0, row=0, sticky='E')
label = ctk.CTkLabel(self, text="Min")
label.grid(column=1, row=0)
label = ctk.CTkLabel(self, text="Max")
label.grid(column=2, row=0)

label = ctk.CTkLabel(self, text="R")
label.grid(column=0, row=1, pady=5, sticky='E')
r_entry = ctk.CTkEntry(self, width=50, textvariable=r_min_var)
r_entry.grid(column=1, row=1, pady=5)
r_entry = ctk.CTkEntry(self, width=50, textvariable=r_max_var)
r_entry.grid(column=2, row=1, pady=5)

label = ctk.CTkLabel(self, text="G")
label.grid(column=0, row=2, pady=5, sticky='E')
g_entry = ctk.CTkEntry(self, width=50, textvariable=g_min_var)
g_entry.grid(column=1, row=2, pady=5)
g_entry = ctk.CTkEntry(self, width=50, textvariable=g_max_var)
g_entry.grid(column=2, row=2, pady=5)

label = ctk.CTkLabel(self, text="B")
label.grid(column=0, row=3, pady=5, sticky='E')
b_entry = ctk.CTkEntry(self, width=50, textvariable=b_min_var)
b_entry.grid(column=1, row=3, pady=5)
b_entry = ctk.CTkEntry(self, width=50, textvariable=b_max_var)
b_entry.grid(column=2, row=3, pady=5)

0 comments on commit f3af86d

Please sign in to comment.