Renombrar una carpeta de imágenes usando Tkinter

Requisitos previos: GUI de Python: tkinter , método os.listdir() , método os.rename()

En este artículo, la tarea es cambiar el nombre de un lote de imágenes usando Python. Ahora diga n imágenes dadas en una carpeta que tiene nombres aleatorios. Por ejemplo, considere las imágenes a continuación.

Ahora el requisito es cambiarles el nombre de manera ordenada y agregar sus dimensiones originales de la imagen respectiva como image-0-362×326, image-1-351×414, … y así sucesivamente. Hacer esto manualmente sería una tarea tediosa, pero este objetivo se puede lograr usando los métodos rename() y listdir() en el módulo os.

método renombrar()

En Python 3, el método rename() se usa para cambiar el nombre de un archivo o directorio. Este método es parte del módulo os y es extremadamente útil.

Sintaxis: os.rename(src, dst) 
Parámetros:
src: Es la dirección de origen del archivo a renombrar 
dst: Es el destino con el nuevo nombre.

método listdir()

El método listdir enumera todo el contenido de un directorio dado.

Sintaxis: list = os.listdir(‘Src’)
Parámetros:
Src: Es la fuente que se listará

El siguiente código hará el trabajo por nosotros. Usando el módulo Tkinter, le pedirá la ruta de la carpeta en la que se almacenan todas las imágenes. Recorre las listas de todas las imágenes en la carpeta xyz, define las direcciones de destino (dst) y fuente (src), y cambia el nombre usando el método rename().

A continuación se muestra la implementación.

Python3

# Python 3 code to rename multiple image
# files in a directory or folder
 
 
import os 
from tkinter import messagebox
import cv2
from tkinter import filedialog
from tkinter import *
 
 
height1 = 0
width1 = 0
 
# Function to select folder to rename images
def get_folder_path():
     
    root = Tk()
    root.withdraw()
    folder_selected = filedialog.askdirectory()
     
    return folder_selected
 
 
# Function to rename multiple files
def submit():
     
    source = src_dir.get()
    src_dir.set("")
    global width1
    global height1
     
    input_folder = get_folder_path()
    i = 0
     
    for img_file in os.listdir(input_folder):
 
        file_name = os.path.splitext(img_file)[0]
        extension = os.path.splitext(img_file)[1]
 
        if extension == '.jpg':
            src = os.path.join(input_folder, img_file)
            img = cv2.imread(src)
            h, w, c = img.shape
            dst = source + '-' + str(i) + '-' + str(w) + "x" + str(h) + ".jpg"
            dst = os.path.join(input_folder, dst)
 
            # rename() function will rename all the files
            os.rename(src, dst)
            i += 1
             
    messagebox.showinfo("Done", "All files renamed successfully !!")
 
 
 
# Driver Code
if __name__ == '__main__':
    top = Tk()
    top.geometry("450x300")
    top.title("Image Files Renamer")
    top.configure(background ="Dark grey")
 
    # For Input Label
    input_path = Label(top,
                       text ="Enter Name to Rename files:",
                       bg ="Dark grey").place(x = 40, y = 60)
     
    # For Input Textbox
    src_dir = StringVar()
    input_path_entry_area = Entry(top,
                                  textvariable = src_dir,
                                  width = 50).place(x = 40, y = 100)
 
     # For submit button
    submit_button = Button(top,
                           text ="Submit",
                           command = submit).place(x = 200, y = 150)
 
    top.mainloop()

Producción :

Publicación traducida automáticamente

Artículo escrito por ravariya_aarti y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *