Skip to content

Commit

Permalink
Merge pull request #73 from nachifur/custom-process-func
Browse files Browse the repository at this point in the history
user custom func
  • Loading branch information
nachifur authored Mar 11, 2023
2 parents 4107c6c + 5d9c7bb commit cf4e6cd
Show file tree
Hide file tree
Showing 5 changed files with 224 additions and 77 deletions.
68 changes: 66 additions & 2 deletions src/mulimgviewer/gui/main_gui.fbp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<property name="internationalize">0</property>
<property name="name">mulimg_viewer</property>
<property name="namespace"></property>
<property name="path">D:\ncfey\Desktop\github\MulimgViewer\gui</property>
<property name="path">D:\ncfey\Desktop\github\MulimgViewer\src\mulimgviewer\gui</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="skip_lua_events">1</property>
Expand Down Expand Up @@ -4377,6 +4377,70 @@
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">CustomFunc</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">customfunc</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="0">
Expand Down Expand Up @@ -7998,7 +8062,7 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<object class="wxMenu" expanded="0">
<object class="wxMenu" expanded="1">
<property name="label">File</property>
<property name="name">m_menu1</property>
<property name="permission">protected</property>
Expand Down
3 changes: 3 additions & 0 deletions src/mulimgviewer/gui/main_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,9 @@ def __init__( self, parent ):
self.onetitle = wx.CheckBox( self.m_panel4, wx.ID_ANY, u"OneTitle", wx.DefaultPosition, wx.DefaultSize, 0 )
wSizer11.Add( self.onetitle, 0, wx.ALL, 5 )

self.customfunc = wx.CheckBox( self.m_panel4, wx.ID_ANY, u"CustomFunc", wx.DefaultPosition, wx.DefaultSize, 0 )
wSizer11.Add( self.customfunc, 0, wx.ALL, 5 )


fgSizer3.Add( wSizer11, 1, wx.EXPAND, 5 )

Expand Down
34 changes: 34 additions & 0 deletions src/mulimgviewer/src/custom_func/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from PIL import ImageEnhance
from pathlib import Path
import os


def main(img_list, save_path, name_list=None):
i = 0
out_img_list = []
if save_path!="":
flag_save = True
save_path = Path(save_path)/"custom_func_output"
if not save_path.exists():
os.makedirs(str(save_path))
else:
flag_save = False

for img in img_list:
# custom process img
enh = ImageEnhance.Contrast(img)
img = enh.enhance(2)
##########

out_img_list.append(img)
if flag_save:
if isinstance(name_list, list):
img_path = save_path/name_list[i]
else:
img_path = save_path/(str(i)+".png")
img.save(str(img_path))
i += 1
return out_img_list

# if __name__ == '__main__':
# main()
56 changes: 39 additions & 17 deletions src/mulimgviewer/src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from .index_table import IndexTable
from .utils import MyTestEvent, get_resource_path
from .utils_img import ImgManager
import os


class MulimgViewer (MulimgViewerGui):
Expand Down Expand Up @@ -211,9 +212,9 @@ def slider_value_change(self, event):
self.SetStatusText_(["Skip", "-1", "-1", "-1"])

def save_img(self, event):
layout_params = self.set_img_layout()
if layout_params != False:
self.ImgManager.layout_params = layout_params
# layout_params = self.set_img_layout()
# if layout_params != False:
# self.ImgManager.layout_params = layout_params
type_ = self.choice_output.GetSelection()
if self.auto_save_all.Value:
last_count_img = self.ImgManager.action_count
Expand Down Expand Up @@ -244,7 +245,6 @@ def save_img(self, event):
except:
pass
flag = self.ImgManager.save_img(self.out_path_str, type_)
self.refresh(event)
if flag == 0:
self.SetStatusText_(
["Save", str(self.ImgManager.action_count), "Save success!", "-1"])
Expand All @@ -263,6 +263,9 @@ def save_img(self, event):
elif flag == 4:
self.SetStatusText_(
["-1", str(self.ImgManager.action_count), "***Error: No magnification box, the magnified image can not be saved***", "-1"])
elif flag == 5:
self.SetStatusText_(
["-1", str(self.ImgManager.action_count), "***Error: First, need to select the input dir***", "-1"])
self.SetStatusText_(["Save", "-1", "-1", "-1"])

def refresh(self, event):
Expand Down Expand Up @@ -616,7 +619,7 @@ def img_left_move(self, event):
x, y = event.GetPosition()
id = self.get_img_id_from_point([x, y])
xy_grid = self.ImgManager.xy_grid[id]
RGBA = self.ImgManager.img.getpixel((int(x), int(y)))
RGBA = self.show_bmp_in_panel.getpixel((int(x), int(y)))
x = x-xy_grid[0]
y = y-xy_grid[1]
self.m_statusBar1.SetStatusText(str(x)+","+str(y)+"/"+str(RGBA), 0)
Expand Down Expand Up @@ -911,10 +914,12 @@ def set_img_layout(self):
0).split(',')
magnifer_resolution = [int(x) for x in magnifer_resolution]

magnifier_show_scale = self.magnifier_show_scale.GetLineText(0).split(',')
magnifier_show_scale = self.magnifier_show_scale.GetLineText(
0).split(',')
magnifier_show_scale = [float(x) for x in magnifier_show_scale]

magnifier_out_scale = self.magnifier_out_scale.GetLineText(0).split(',')
magnifier_out_scale = self.magnifier_out_scale.GetLineText(
0).split(',')
magnifier_out_scale = [float(x) for x in magnifier_out_scale]

if self.checkBox_auto_draw_color.Value:
Expand Down Expand Up @@ -987,7 +992,7 @@ def set_img_layout(self):
output_scale, # 5
img_resolution, # 6
1 if self.magnifier.Value else 0, # 7
magnifier_show_scale, # 8
magnifier_show_scale, # 8
color, # 9
line_width, # 10
self.move_file.Value, # 11
Expand All @@ -1010,9 +1015,14 @@ def set_img_layout(self):
magnifer_resolution, # 28
magnifer_row_col, # 29
self.onetitle.Value, # 30
magnifier_out_scale] # 31
magnifier_out_scale, # 31
self.customfunc.Value, # 32
self.out_path_str] # 33

def show_img(self):
if self.customfunc.Value and self.out_path_str == "":
self.out_path(None)
self.ImgManager.layout_params[33] = self.out_path_str
# check layout_params change
try:
if self.layout_params_old[0:2] != self.ImgManager.layout_params[0:2] or (self.layout_params_old[19] != self.ImgManager.layout_params[19]):
Expand Down Expand Up @@ -1048,10 +1058,19 @@ def show_img(self):
self.slider_img.SetMax(self.ImgManager.max_action_num-1)
self.ImgManager.get_flist()

# show the output image processed by the custom func; return cat(bmp, processed_bmp)
if self.customfunc.Value:
bmp_processed = self.process_by_custom_func()
else:
bmp_processed = None

flag = self.ImgManager.stitch_images(
0, copy.deepcopy(self.xy_magnifier))
if flag == 0:
bmp = self.ImgManager.img
if self.customfunc.Value and bmp_processed != None:
bmp = self.ImgManager.ImgF.cat_img(bmp, bmp_processed)
self.show_bmp_in_panel = bmp
self.img_size = bmp.size
bmp = self.ImgManager.ImgF.PIL2wx(bmp)

Expand Down Expand Up @@ -1097,7 +1116,7 @@ def show_img(self):
["-1", "-1", "No image is displayed! Check Show original/Show 🔍️/Show title.", "-1"])
else:
self.SetStatusText_(
["-1", "-1", "***Error: no image in this dir! Maybe you can choose parallel mode!***", "-1"])
["-1", "-1", "***Error: no image in this dir!***", "-1"])
self.auto_layout()
self.SetStatusText_(["Stitch", "-1", "-1", "-1"])

Expand Down Expand Up @@ -1168,6 +1187,16 @@ def init_min_size(self):
self.scrolledWindow_img.SetMinSize(
wx.Size((50, self.Size[1]-150)))

def process_by_custom_func(self):
flag = self.ImgManager.stitch_images(
0, copy.deepcopy(self.xy_magnifier))
bmp_processed = self.ImgManager.img
self.ImgManager.layout_params[32] = False # customfunc
if flag == 0:
return bmp_processed
else:
return None

def split_sash_pos_changing(self, event):

self.init_min_size()
Expand Down Expand Up @@ -1263,13 +1292,6 @@ def title_auto_fc(self, event):
for title in titles:
title.Enabled = True

# def show_scale_change(self, event):
# self.show_scale_proportion = 0
# self.refresh(event)

# self.show_scale = wx.TextCtrl( self.scrolledWindow_set, wx.ID_ANY, u"1,1", wx.DefaultPosition, wx.Size( 60,-1 ), style=wx.TE_PROCESS_ENTER)
# wSizer6.Add( self.show_scale, 0, wx.ALL, 5 )

def select_img_box_func(self, event):
if self.select_img_box.Value:
self.box_id = -1
Expand Down
Loading

0 comments on commit cf4e6cd

Please sign in to comment.