summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebulois Quentin <quentin.debulois@gmail.com>2020-09-17 08:40:49 +0200
committerDebulois Quentin <quentin.debulois@gmail.com>2020-09-17 08:40:49 +0200
commit1050e54ea530326fb4288a56c3e2ee4781f569b5 (patch)
tree32c09ddc78591d093092c5a17081c0ed2ff14027
parent7e375df5b11da3175b2e173e3ef40667b0d28f06 (diff)
Création de fichier en vu de la POO (convertisseur & config)
-rw-r--r--Redim/config.py25
-rw-r--r--Redim/convertisseur.py88
-rw-r--r--Redim/main.py136
3 files changed, 125 insertions, 124 deletions
diff --git a/Redim/config.py b/Redim/config.py
new file mode 100644
index 0000000..2634ded
--- /dev/null
+++ b/Redim/config.py
@@ -0,0 +1,25 @@
+import json
+
+class config():
+ def sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final):
+ dictionnaire = {
+ "dimensions" : [[largeur1, hauteur1], [largeur2,hauteur2]],
+ "background_color" : background_color,
+ "format_final" : format_final
+ }
+ if not isdir(json_path):
+ mkdir(json_path)
+ with open(join(json_path, "config_redim"), "w") as f:
+ json.dump(dictionnaire, f)
+
+ def lecture(json_path):
+ with open(join(json_path, "config_redim"), "r") as f:
+ dictionnaire = json.load(f)
+ largeur1 = dictionnaire["dimensions"][0][0]
+ hauteur1 = dictionnaire["dimensions"][0][1]
+ largeur2 = dictionnaire["dimensions"][1][0]
+ hauteur2 = dictionnaire["dimensions"][1][1]
+ background_color = dictionnaire["background_color"]
+ format_final = dictionnaire["format_final"]
+ return largeur1, hauteur1, largeur2, hauteur2, background_color, format_final
+
diff --git a/Redim/convertisseur.py b/Redim/convertisseur.py
new file mode 100644
index 0000000..2a7ce70
--- /dev/null
+++ b/Redim/convertisseur.py
@@ -0,0 +1,88 @@
+from PIL.Image import ANTIALIAS
+from PIL.Image import new as image_new
+from PIL.Image import open as image_open
+
+
+class Redim():
+ def __init__(self, formats_acceptes):
+ self.formats_acceptes = formats_acceptes
+
+ def start(self, dossier, larg, haut, background_color, format_final):
+ if dossier == "":
+ print(" >>>ERREUR<<< : Aucun dossier selectionne.")
+ return
+ if isdir(dossier):
+ liste_fichier, dossier_sauvegarde = self.listage_fichiers_et_dossiers(dossier, larg)
+ self.main(liste_fichier, dossier_sauvegarde, larg, haut, background_color, format_final)
+ else:
+ print(" >>>ERREUR<<< : Le dossier n'existe plus.")
+
+ def listage_fichiers_et_dossiers(self, dossier, larg):
+ liste_fichier = []
+ dossier_sauvegarde = join(dossier, str(larg))
+ if not isdir(dossier_sauvegarde):
+ mkdir(dossier_sauvegarde)
+ for nom in listdir(dossier):
+ if isfile(join(dossier, nom)):
+ if join(dossier, nom).rsplit(".", 1)[-1] in self.formats_acceptes:
+ liste_fichier.append([join(dossier, nom), nom])
+ return liste_fichier, dossier_sauvegarde
+
+ def suppression_de_alpha(self, img, background_color):
+ img = img.convert("RGBA")
+ if img.mode in ("RGBA", "LA"):
+ fond = image_new(img.mode[:-1], img.size, background_color)
+ fond.paste(img, img.split()[-1])
+ img = fond
+ img.convert("RGB")
+ return img
+
+ def redimensionnement(self, img, larg, haut):
+ if (img.size[0] >= larg) or (img.size[1] >= haut):
+ img.thumbnail((larg, haut), ANTIALIAS)
+ elif (img.size[0] / img.size[1]) <= (larg / haut):
+ nouvelle_larg = int(haut * img.size[0] / img.size[1])
+ img = img.resize((nouvelle_larg, haut), ANTIALIAS)
+ else:
+ nouvelle_haut = int(larg * img.size[1] / img.size[0] )
+ img = img.resize((larg, nouvelle_haut), ANTIALIAS)
+ return img
+
+ def rennomage(self, origine_nom, larg, format_final):
+ charcters_indesirable = ("(", ")", "[", "]", "{", "}","'", "#",
+ "&","$","£", "¤", "€", "`", "^", "°", "¨",
+ "@", "!", ",", "~", "%", ";", "µ", "§")
+ charcters_underscore = (" ", "-")
+ nouveau_nom = origine_nom
+ for i in charcters_indesirable:
+ nouveau_nom = nouveau_nom.replace(i, "")
+ for i in charcters_underscore:
+ nouveau_nom = nouveau_nom.replace(i, "_")
+ return nouveau_nom.lower() + "_modif_" + str(larg) + format_final
+
+ def main(self, liste_fichier, dossier_sauvegarde, larg, haut, background_color, format_final):
+ for nom in liste_fichier:
+ try:
+ 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, background_color)
+ img = self.redimensionnement(img, larg, haut)
+ print(" >> Taille apres redimensionnement :", img.size[0] ,"x" ,img.size[1], "px")
+ nouveau_nom = self.rennomage(nom[1].rsplit(".", 1)[0], larg, format_final)
+ fond = image_new("RGB", (larg, haut), background_color)
+ fond.paste(img, ((larg - img.size[0]) // 2, (haut - img.size[1]) // 2))
+ if isfile(join(dossier_sauvegarde, nouveau_nom)):
+ adverbes_multplicatifs = ("_bis", "_ter", "_quater", "_quinquies", "_sexies", "_septies")
+ nom_deja_present = nouveau_nom
+ iteration = 0
+ while isfile(join(dossier_sauvegarde, nom_deja_present)):
+ nom_deja_present = nouveau_nom.rsplit(".", 1)[0] + adverbes_multplicatifs[iteration]
+ nom_deja_present += format_final
+ iteration += 1
+ fond.save(join(dossier_sauvegarde, nom_deja_present))
+ else:
+ fond.save(join(dossier_sauvegarde, nouveau_nom))
+ except Exception as e:
+ print(" >>>ERREUR<<< : ", e)
diff --git a/Redim/main.py b/Redim/main.py
index 4dc4a49..6c22f62 100644
--- a/Redim/main.py
+++ b/Redim/main.py
@@ -1,110 +1,20 @@
#!/usr/bin/python
-"""
-Nécessite Pillow & PyQt5
-"""
-
import json
from os import system, listdir, mkdir, environ, getenv
from os.path import join, isfile, isdir, getmtime
from sys import platform, exit
from time import time
from shutil import rmtree
-from PIL.Image import ANTIALIAS
-from PIL.Image import new as image_new
-from PIL.Image import open as image_open
from PyQt5.QtWidgets import QFileDialog, QApplication, QWidget
+from config import *
+from convertisseur import *
-class Redim():
- def __init__(self, formats_acceptes):
- self.formats_acceptes = formats_acceptes
-
- def start(self, dossier, larg, haut, background_color, format_final):
- if dossier == "":
- print(" >>>ERREUR<<< : Aucun dossier selectionne.")
- return
- if isdir(dossier):
- liste_fichier, dossier_sauvegarde = self.listage_fichiers_et_dossiers(dossier, larg)
- self.main(liste_fichier, dossier_sauvegarde, larg, haut, background_color, format_final)
- else:
- print(" >>>ERREUR<<< : Le dossier n'existe plus.")
-
- def listage_fichiers_et_dossiers(self, dossier, larg):
- liste_fichier = []
- dossier_sauvegarde = join(dossier, str(larg))
- if not isdir(dossier_sauvegarde):
- mkdir(dossier_sauvegarde)
- for nom in listdir(dossier):
- if isfile(join(dossier, nom)):
- if join(dossier, nom).rsplit(".", 1)[-1] in self.formats_acceptes:
- liste_fichier.append([join(dossier, nom), nom])
- return liste_fichier, dossier_sauvegarde
-
- def suppression_de_alpha(self, img, background_color):
- img = img.convert("RGBA")
- if img.mode in ("RGBA", "LA"):
- fond = image_new(img.mode[:-1], img.size, background_color)
- fond.paste(img, img.split()[-1])
- img = fond
- img.convert("RGB")
- return img
-
- def redimensionnement(self, img, larg, haut):
- if (img.size[0] >= larg) or (img.size[1] >= haut):
- img.thumbnail((larg, haut), ANTIALIAS)
- elif (img.size[0] / img.size[1]) <= (larg / haut):
- nouvelle_larg = int(haut * img.size[0] / img.size[1])
- img = img.resize((nouvelle_larg, haut), ANTIALIAS)
- else:
- nouvelle_haut = int(larg * img.size[1] / img.size[0] )
- img = img.resize((larg, nouvelle_haut), ANTIALIAS)
- return img
-
- def rennomage(self, origine_nom, larg, format_final):
- charcters_indesirable = ("(", ")", "[", "]", "{", "}","'", "#",
- "&","$","£", "¤", "€", "`", "^", "°", "¨",
- "@", "!", ",", "~", "%", ";", "µ", "§")
- charcters_underscore = (" ", "-")
- nouveau_nom = origine_nom
- for i in charcters_indesirable:
- nouveau_nom = nouveau_nom.replace(i, "")
- for i in charcters_underscore:
- nouveau_nom = nouveau_nom.replace(i, "_")
- return nouveau_nom.lower() + "_modif_" + str(larg) + format_final
-
- def main(self, liste_fichier, dossier_sauvegarde, larg, haut, background_color, format_final):
- for nom in liste_fichier:
- try:
- 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, background_color)
- img = self.redimensionnement(img, larg, haut)
- print(" >> Taille apres redimensionnement :", img.size[0] ,"x" ,img.size[1], "px")
- nouveau_nom = self.rennomage(nom[1].rsplit(".", 1)[0], larg, format_final)
- fond = image_new("RGB", (larg, haut), background_color)
- fond.paste(img, ((larg - img.size[0]) // 2, (haut - img.size[1]) // 2))
- if isfile(join(dossier_sauvegarde, nouveau_nom)):
- adverbes_multplicatifs = ("_bis", "_ter", "_quater", "_quinquies", "_sexies", "_septies")
- nom_deja_present = nouveau_nom
- iteration = 0
- while isfile(join(dossier_sauvegarde, nom_deja_present)):
- nom_deja_present = nouveau_nom.rsplit(".", 1)[0] + adverbes_multplicatifs[iteration]
- nom_deja_present += format_final
- iteration += 1
- fond.save(join(dossier_sauvegarde, nom_deja_present))
- else:
- fond.save(join(dossier_sauvegarde, nouveau_nom))
- except Exception as e:
- print(" >>>ERREUR<<< : ", e)
-
- def nettoyage_pyinstaller(self):
- for i in listdir(environ["TMP"]):
- if i.startswith("_MEI") and isdir(i) and (int(getmtime(join(environ["TMP"], i))) < (time() - 86400)):
- rmtree(join(environ["TMP"], i))
-
+def nettoyage_pyinstaller(self):
+ for i in listdir(environ["TMP"]):
+ if i.startswith("_MEI") and isdir(i) and (int(getmtime(join(environ["TMP"], i))) < (time() - 86400)):
+ rmtree(join(environ["TMP"], i))
def reset_screen(banner):
if platform != "linux":
@@ -113,28 +23,6 @@ def reset_screen(banner):
system("clear")
print(*banner)
-def sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final):
- dictionnaire = {
- "dimensions" : [[largeur1, hauteur1], [largeur2,hauteur2]],
- "background_color" : background_color,
- "format_final" : format_final
- }
- if not isdir(json_path):
- mkdir(json_path)
- with open(join(json_path, "config_redim"), "w") as f:
- json.dump(dictionnaire, f)
-
-def lecture_json(json_path):
- with open(join(json_path, "config_redim"), "r") as f:
- dictionnaire = json.load(f)
- largeur1 = dictionnaire["dimensions"][0][0]
- hauteur1 = dictionnaire["dimensions"][0][1]
- largeur2 = dictionnaire["dimensions"][1][0]
- hauteur2 = dictionnaire["dimensions"][1][1]
- background_color = dictionnaire["background_color"]
- format_final = dictionnaire["format_final"]
- return largeur1, hauteur1, largeur2, hauteur2, background_color, format_final
-
if __name__ == "__main__":
largeur1 = 500
hauteur1 = 350
@@ -149,9 +37,9 @@ if __name__ == "__main__":
while True:
redim = Redim(formats_acceptes)
if not isfile(join(json_path, "config_redim")):
- sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
+ config.sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
else:
- largeur1, hauteur1, largeur2, hauteur2, background_color, format_final = lecture_json(json_path)
+ largeur1, hauteur1, largeur2, hauteur2, background_color, format_final = config.lecture(json_path)
if platform != "linux":
redim.nettoyage_pyinstaller()
banner = (
@@ -212,7 +100,7 @@ if __name__ == "__main__":
hauteur1 = dimensions[1]
largeur2 = dimensions[2]
hauteur2 = dimensions[3]
- sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
+ config.sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
print("\n[-] Modification effectue.")
input("\n[-] fin, appuyer sur \'entrer\' pour recommencer .")
break
@@ -233,7 +121,7 @@ if __name__ == "__main__":
except:
print(" >>>ERREUR<<< Valeur incorrecte.")
background_color = nouveau_background_color
- sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
+ config.sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
print("\n[-] Modification effectue.")
input("\n[-] fin, appuyer sur \'entrer\' pour recommencer .")
break
@@ -249,7 +137,7 @@ if __name__ == "__main__":
nouveau_format = int(nouveau_format.strip())
if nouveau_format > 0:
format_final = "." + formats_acceptes[nouveau_format - 1]
- sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
+ config.sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
print("\n[-] Modification effectue.")
else:
print(">>>ERREUR<<< Choix invalide.")
@@ -268,7 +156,7 @@ if __name__ == "__main__":
hauteur2 = 900
background_color = [255, 255, 255]
format_final = ".webp"
- sauvegarde_json(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
+ config.sauvegarde(json_path, largeur1, hauteur1, largeur2, hauteur2, background_color, format_final)
print("\n[-] Modification effectue.")
input("\n[-] fin, appuyer sur \'entrer\' pour recommencer .")
break