Image Converter using TKinter + Pillow

 avatar
JO00
python
2 months ago
3.8 kB
8
Indexable
import PIL.Image
from tkinter import *
from tkinter import filedialog
from tkinter import ttk
import os

view_label="/../Default/"
loc_look="/"

conv_to = [".webp", ".jpeg", ".png"]

def browseFiles():
    #this gets location if ticked and looking there
    looking_location="/"
    if check_int.get() ==1:
        looking_location=loc_look
        #looking_location="C:/Users/Jesse/Downloads"
        
    
    #actually looking for files
    list_files = filedialog.askopenfilename(initialdir = looking_location, title = "Select a Image", filetypes = (("Image files", "*.png *.webp *.jpeg"), ("All files", "*.*")), multiple = True)
    
    #now convert or try to at least
    counter=1
    for filename in list_files:
        chosen_prefix=str(conv_to[cb.current()])
        check_if_same=filename.endswith(chosen_prefix)
        #fails if same does not waste convert
        if check_if_same:
            label_file_explorer.configure(text="File is same format did not convert ")
        else:
            label_file_explorer.configure(text="Begin Convert File: "+filename)
            try:
                strip_filename=filename[:filename.rfind('.')]
                new_filename=strip_filename+str(chosen_prefix)
                file_save_pref=chosen_prefix.removeprefix('.')
                im = PIL.Image.open(filename).convert("RGB")
                im.save(new_filename, file_save_pref)
                string_success="Successfully converted "+str(counter) + " files!"
                label_file_explorer.configure(text=string_success)
                counter=counter+1
            except:
                label_file_explorer.configure(text="Failure to convert file")

def save_folder():
    #looking folder and saving if successful
    global loc_look
    folder_sav=filedialog.askdirectory(initialdir = "/", title = "Select a Folder to Save")
    if (os.path.isdir(folder_sav)):
        view_label=(folder_sav[0:7])+"/../"+(folder_sav[-11:])
        loc_look=folder_sav
        save_label_location.configure(text=view_label)

    else:
        loc_look="/"
        save_label_location.configure(text="/../Default/")
        #print("doesnt exitst..")

#make gui
window = Tk()
window.title('Image Converter')
window.geometry("300x170")
window.config(background = "white")
 
#labels
label_file_explorer = Label(window, text = "Quick Use: Select Format, Select Images -> Convert",width = 40, height = 1, fg = "red")
button_explore = Button(window, text = "Select + Convert Images",command = browseFiles)
button_exit = Button(window, text = "Close",command = exit)
check_int = IntVar ()
check_save_fold=Checkbutton(window, text='Look in Saved?', variable=check_int, onvalue=1, offvalue=0)
save_label_location=Label(window, text = view_label,width = 25, height = 1, fg = "blue")
button_save_file = Button(window, text = "Save Folder for Looking to Select",command = save_folder)


# the dropdown file type  
cb = ttk.Combobox(window, values=conv_to)
label_ontop=Label(window, text = "Convert selected images to:", width = 40, height = 1, fg = "blue")
label_priorconv=Label(window, text = "Select images to convert by pressing button below", width = 40, height = 1, fg = "blue")
cb.set(conv_to[0])

#location in gui
label_file_explorer.grid(column = 1, row = 1, sticky="w", padx=3)
label_ontop.grid(column = 1, row = 2, sticky="w")
label_priorconv.grid(column = 1, row = 4, sticky="w")
button_explore.grid(column = 1, row = 5, sticky="WENS", padx=3)
cb.grid(column = 1,row = 3, sticky="WENS", padx=3)
check_save_fold.grid(column = 1,row = 6, sticky="W", padx=3)
save_label_location.grid(column = 1,row = 6, sticky="E", padx=3)
button_save_file.grid(column = 1, row = 7, sticky="WENS", padx=3)
window.mainloop()

Editor is loading...
Leave a Comment