diff options
Diffstat (limited to 'Redim/core.py')
| -rw-r--r-- | Redim/core.py | 191 |
1 files changed, 105 insertions, 86 deletions
diff --git a/Redim/core.py b/Redim/core.py index 03d7f1c..d180305 100644 --- a/Redim/core.py +++ b/Redim/core.py @@ -1,3 +1,7 @@ +"""Contient la class principale de Redim, +travail sur les photos à l'aide de pillow +""" + from os import mkdir, listdir from os.path import isfile, isdir, join from PIL.Image import ANTIALIAS @@ -6,41 +10,33 @@ from PIL.Image import open as image_open class Redim(): + """Classe principale de Redim, travail sur les photos""" def __init__(self): - self.__charcters_indesirable = ( + self.__character_underscore = (" ", "-") + self.__character_indesirable = ( "(", ")", "[", "]", "{", "}", "'", "#", "¨", "&", "$", "£", "¤", "€", "`", "^", "°", "§", "@", "!", ",", "~", "%", ";", "µ" ) - self.__charcters_underscore = (" ", "-") self.__adverbes_multplicatifs = ( "_bis", "_ter", "_quater", "_quinquies", "_sexies", "_septies" ) - def start(self, dossier, configuration): - for i in range(len(configuration["dimensions"])): - print( - "\n[-] travail pour", - str(configuration["dimensions"][i][0]), - "x", - str(configuration["dimensions"][i][1]), - "px :" - ) - if dossier != "": - if isdir(dossier): - liste, destination = self.listage( - dossier, - str(configuration["dimensions"][i][0]), - configuration["formats_acceptes"] - ) - self.main(liste, destination, configuration, i) - else: - print(" >>>ERREUR<<< : Le dossier n'existe plus.") - else: - print(" >>>ERREUR<<< : Aucun dossier selectionne.") + def rennomage(self, origine_nom, larg, format_final): + """Formatage du nom en retirant tous ces charactères hideux""" + nouveau_nom = origine_nom + for i in self.__character_indesirable: + nouveau_nom = nouveau_nom.replace(i, "") + for i in self.__character_underscore: + nouveau_nom = nouveau_nom.replace(i, "_") + return nouveau_nom.lower() + "_modif_" + str(larg) + format_final - def listage(self, dossier, larg, formats_acceptes): + @staticmethod + def listage(dossier, larg, formats_acceptes): + """Listage des fichiers présent dans le dossier sélectionné, + return de la liste + du dossier ou seront enregistré les photos + """ liste = [] destination = join(dossier, str(larg)) if not isdir(destination): @@ -51,7 +47,9 @@ class Redim(): liste.append([join(dossier, nom), nom]) return liste, destination - def suppression_de_alpha(self, img, background): + @staticmethod + def suppression_de_alpha(img, background): + """Suppression de l'alpha (transparent) des photos""" img = img.convert("RGBA") if img.mode in ("RGBA", "LA"): fond = image_new(img.mode[:-1], img.size, background) @@ -60,7 +58,11 @@ class Redim(): img.convert("RGB") return img - def redimensionnement(self, img, larg, haut): + @staticmethod + def redimensionnement(img, larg, haut): + """Redimensionnement en agrandissant ou reduisant + pour coller aux dimensions finales + """ if (img.size[0] >= larg) or (img.size[1] >= haut): img.thumbnail((larg, haut), ANTIALIAS) elif (img.size[0] / img.size[1]) <= (larg / haut): @@ -71,70 +73,87 @@ class Redim(): img = img.resize((larg, nouvelle_haut), ANTIALIAS) return img - def rennomage(self, origine_nom, larg, format_final): - nouveau_nom = origine_nom - for i in self.__charcters_indesirable: - nouveau_nom = nouveau_nom.replace(i, "") - for i in self.__charcters_underscore: - nouveau_nom = nouveau_nom.replace(i, "_") - return nouveau_nom.lower() + "_modif_" + str(larg) + format_final - - def main(self, liste, destination, configuration, loop): - for nom in liste: - print(" [+] Travail sur :", nom[1]) - img = image_open(nom[0]) + def main(self, dossier, configuration): + """Fonction principale, execute toutes les method dans l'ordre + pour sauvegarder la photos aux bonnes dimensions, au bon format, + et sans alpha + """ + for loop in range(len(configuration["dimensions"])): print( - " >> Taille initiale :", - img.size[0], + "\n[-] travail pour", + str(configuration["dimensions"][loop][0]), "x", - img.size[1], - "px" + str(configuration["dimensions"][loop][1]), + "px :" ) - if nom[1].rsplit(".", 1)[-1] in ("png", "webp"): - img = self.suppression_de_alpha( + if dossier != "": + if isdir(dossier): + liste, destination = self.listage( + dossier, + str(configuration["dimensions"][loop][0]), + configuration["formats_acceptes"] + ) + else: + print(" >>>ERREUR<<< : Le dossier n'existe plus.") + else: + print(" >>>ERREUR<<< : Aucun dossier selectionne.") + for nom in liste: + print(" [+] Travail sur :", nom[1]) + img = image_open(nom[0]) + print( + " >> Taille initiale :", + img.size[0], + "x", + img.size[1], + "px" + ) + if nom[1].rsplit(".", 1)[-1] in ("png", "webp"): + img = self.suppression_de_alpha( + img, + configuration["background"] + ) + img = self.redimensionnement( img, - configuration["background"] + configuration["dimensions"][loop][0], + configuration["dimensions"][loop][1], ) - img = self.redimensionnement( - img, - configuration["dimensions"][loop][0], - configuration["dimensions"][loop][1], - ) - print( - " >> Taille apres redimensionnement :", - img.size[0], - "x", - img.size[1], - "px" - ) - nouveau_nom = self.rennomage( - nom[1].rsplit(".", 1)[0], - configuration["dimensions"][loop][0], - configuration["format_final"] - ) - fond = image_new( - "RGB", - ( + print( + " >> Taille apres redimensionnement :", + img.size[0], + "x", + img.size[1], + "px" + ) + nouveau_nom = self.rennomage( + nom[1].rsplit(".", 1)[0], configuration["dimensions"][loop][0], - configuration["dimensions"][loop][1] - ), - tuple(configuration["background"]) - ) - fond.paste( - img, - ( - (configuration["dimensions"][loop][0] - img.size[0]) // 2, - (configuration["dimensions"][loop][1] - img.size[1]) // 2 + configuration["format_final"] ) - ) - if isfile(join(destination, nouveau_nom)): - nom_deja_present = nouveau_nom - iteration = 0 - while isfile(join(destination, nom_deja_present)): - nom_deja_present = nouveau_nom.rsplit(".", 1)[0]\ - + self.__adverbes_multplicatifs[iteration] - nom_deja_present += configuration["format_final"] - iteration += 1 - fond.save(join(destination, nom_deja_present)) - else: - fond.save(join(destination, nouveau_nom)) + fond = image_new( + "RGB", + ( + configuration["dimensions"][loop][0], + configuration["dimensions"][loop][1] + ), + tuple(configuration["background"]) + ) + fond.paste( + img, + ( + (configuration["dimensions"][loop][0] + - img.size[0]) // 2, + (configuration["dimensions"][loop][1] + - img.size[1]) // 2 + ) + ) + if isfile(join(destination, nouveau_nom)): + nom_deja_present = nouveau_nom + iteration = 0 + while isfile(join(destination, nom_deja_present)): + nom_deja_present = nouveau_nom.rsplit(".", 1)[0]\ + + self.__adverbes_multplicatifs[iteration]\ + + configuration["format_final"] + iteration += 1 + fond.save(join(destination, nom_deja_present)) + else: + fond.save(join(destination, nouveau_nom)) |
