Skip to content

Commit 60e0caf

Browse files
implemented merged version for build
1 parent f969fa1 commit 60e0caf

File tree

2 files changed

+126
-2
lines changed

2 files changed

+126
-2
lines changed

src/imagecompressor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@
5252
for img in inFiles:
5353
in_path_img = in_folder + "/" + img
5454
out_path_img = out_folder + "/" + img
55-
img = Image.open(in_path_img)
56-
img.save(out_path_img, optimize=True, quality=quality_param)
55+
try:
56+
img = Image.open(in_path_img)
57+
img.save(out_path_img, optimize=True, quality=quality_param)
58+
except Exception as e:
59+
print("An exception occurred: {}".format(e))
5760

5861
print("Compression completed")

src/megerd.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import os
2+
import sys
3+
import time
4+
import subprocess
5+
import tkinter as tk
6+
from PIL import Image
7+
from tkinter import filedialog
8+
9+
#Config
10+
quality_param = 5
11+
12+
menu = tk.Tk()
13+
menu.title("Image Compressor")
14+
#Window dimensions
15+
width = 300
16+
height = 200
17+
#Center
18+
menu.geometry(f"{width}x{height}+{int(menu.winfo_screenwidth()/2 - width/2)}+{int(menu.winfo_screenheight()/2 - height/2)}")
19+
20+
#Variables to store the inputs
21+
input_folder = ""
22+
output_folder = ""
23+
quality = ""
24+
25+
#Variables to check if values were introduced
26+
b_input = False
27+
b_output = False
28+
b_quality = False
29+
30+
#Functions to do OnClick
31+
def choose_input_folder():
32+
global input_folder, b_input
33+
input_folder = filedialog.askdirectory()
34+
b_input = True
35+
def choose_output_folder():
36+
global output_folder, b_output
37+
output_folder = filedialog.askdirectory()
38+
b_output = True
39+
def enter():
40+
global b_quality, quality
41+
if b_input == False:
42+
label_input.config(fg="red")
43+
else:
44+
label_input.config(fg="black")
45+
if b_output == False:
46+
label_output.config(fg="red")
47+
else:
48+
label_output.config(fg="black")
49+
quality = entry_quality.get()
50+
if not quality.isdigit() or int(quality) > 95:
51+
label_quality.config(fg="red")
52+
return
53+
else:
54+
label_quality.config(fg="black")
55+
b_quality = True
56+
if (b_input and b_output and b_quality):
57+
menu.destroy()
58+
59+
#Create widgets
60+
label_input = tk.Label(menu, text="Input folder:")
61+
label_output = tk.Label(menu, text="Output folder:")
62+
label_quality = tk.Label(menu, text="Compression quality (0-95):")
63+
button_input = tk.Button(menu, text="Choose folder", command=choose_input_folder)
64+
button_output = tk.Button(menu, text="Choose folder", command=choose_output_folder)
65+
entry_quality = tk.Entry(menu)
66+
button_enter = tk.Button(menu, text="Compress", command=enter)
67+
entry_quality.insert(0, "5")
68+
69+
#Pack widgets
70+
label_input.pack()
71+
button_input.pack()
72+
label_output.pack()
73+
button_output.pack()
74+
label_quality.pack()
75+
entry_quality.pack()
76+
button_enter.pack()
77+
78+
menu.mainloop()
79+
80+
print("Input folder:", input_folder)
81+
print("Output folder:", output_folder)
82+
print("Quality:", quality)
83+
84+
exe_path = os.path.dirname(sys.executable)
85+
86+
if(b_input and b_output and b_quality):
87+
print("#####Running Script#####")
88+
89+
#Directory checks
90+
if (not os.path.isdir(input_folder) or not os.path.exists(input_folder)):
91+
print("WARNING: Directory: " + input_folder + " doesn't exist or is not a directory")
92+
input_folder = os.getcwd() + input_folder
93+
print("Using: " + input_folder)
94+
if (not os.path.isdir(input_folder) or not os.path.exists(input_folder)):
95+
print("ERROR: Directory: " + input_folder + " folder doesn't exist or is not a directory")
96+
sys.exit(1)
97+
if (not os.path.exists(output_folder)):
98+
print("WARNING: \"" + output_folder + "\" doesn't exist.")
99+
if (not os.path.exists(os.getcwd() + output_folder)):
100+
print("WARNING: \"" + os.getcwd() + output_folder + "\" doesn't exist. Creating folder...")
101+
os.mkdir(output_folder)
102+
print("Created: " + output_folder)
103+
print("Using: " + input_folder)
104+
105+
#Conversion
106+
print("Quality value set to: ", quality)
107+
inFiles = os.listdir(input_folder)
108+
for img in inFiles:
109+
in_path_img = input_folder + "/" + img
110+
out_path_img = output_folder + "/" + img
111+
try:
112+
img = Image.open(in_path_img)
113+
img.save(out_path_img, optimize=True, quality=quality)
114+
except Exception as e:
115+
print("An exception occurred: {}".format(e))
116+
117+
else:
118+
print("#####ABORTED#####")
119+
120+
time.sleep(2) #Let results be known
121+
print("Compression completed")

0 commit comments

Comments
 (0)