180 lines
4.4 KiB
Python
Executable File
180 lines
4.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# OOO1.jpg = page de droite
|
|
# 0002.jpg = page de gauche
|
|
# 0000.jpg = peut-être page vide ?
|
|
# 000n.jpg = peut-être page vide ?
|
|
|
|
#
|
|
# Faire ces premières modifications, puis on passe aux ajustements luminosité,
|
|
# contraste, etc
|
|
#
|
|
# Puis on fait le PDF puis on OCR.
|
|
|
|
# class PIL.ImageTk.PhotoImage(image: Image.Image | str | None = None, size: tuple[int, int] | None = None, **kw: Any)
|
|
|
|
# list_of_num = [int(i.split(".")[0]) for i in a]
|
|
# list_of_num.sort()
|
|
|
|
from os import listdir
|
|
import os
|
|
import glob
|
|
import tkinter as tk
|
|
from tkinter import ttk
|
|
from PIL import Image, ImageTk, ImageEnhance
|
|
from tkinter import filedialog
|
|
|
|
parent = tk.Tk()
|
|
parent.title("Perlinator")
|
|
parent.minsize(320, 240)
|
|
|
|
image_files = []
|
|
|
|
|
|
def upload_folder():
|
|
folder_path = filedialog.askdirectory()
|
|
if folder_path:
|
|
global image_files
|
|
if not any(
|
|
f.lower().endswith((".png", ".jpg", ".jpeg")) for f in listdir(folder_path)
|
|
):
|
|
popup = tk.Toplevel(parent)
|
|
popup.title("Attention")
|
|
popup.geometry("300x100")
|
|
label = tk.Label(popup, text="Aucune image trouvée dans le dossier.")
|
|
label.pack(pady=20)
|
|
popup.after(2000, popup.destroy)
|
|
return
|
|
|
|
image_files = [
|
|
f
|
|
for f in listdir(folder_path)
|
|
if f.lower().endswith((".png", ".jpg", ".jpeg"))
|
|
]
|
|
print(f" {len(image_files)} images trouvées dans {folder_path}:")
|
|
for image_file in image_files:
|
|
print(image_file)
|
|
print(image_files)
|
|
|
|
open_button.pack_forget()
|
|
|
|
else:
|
|
popup = tk.Toplevel(parent)
|
|
popup.title("Attention")
|
|
popup.geometry("300x100")
|
|
label = tk.Label(popup, text="Aucun dossier sélectionné.")
|
|
label.pack(pady=20)
|
|
popup.after(2000, popup.destroy)
|
|
|
|
|
|
#
|
|
#
|
|
# test logic, not real
|
|
files = []
|
|
|
|
|
|
def bulk_optimize(
|
|
source_path: str, dest_path: str, b: float, c: float, s: float
|
|
) -> None:
|
|
with Image.open(source_path) as img:
|
|
brightness = ImageEnhance.Brightness(img)
|
|
contrast = ImageEnhance.Contrast(img)
|
|
sharpness = ImageEnhance.Sharpness(img)
|
|
|
|
brightness.enhance(b)
|
|
contrast.enhance(c)
|
|
sharpness.enhance(s)
|
|
|
|
files.append(img)
|
|
|
|
|
|
from pathlib import Path
|
|
|
|
paths = Path(".").glob("*.png")
|
|
for path in paths:
|
|
bulk_optimize(path, path.stem, 1.0, 0.5, 0.5)
|
|
# TEST LOGIC END
|
|
|
|
|
|
# Python program to demonstrate
|
|
# scale widget
|
|
from tkinter import *
|
|
|
|
b_slider_double = DoubleVar()
|
|
c_slider_double = DoubleVar()
|
|
s_slider_double = DoubleVar()
|
|
|
|
|
|
def get_sliders():
|
|
|
|
print(
|
|
b_slider_double.get() / 100,
|
|
c_slider_double.get() / 100,
|
|
s_slider_double.get() / 100,
|
|
)
|
|
return (
|
|
b_slider_double.get() / 100,
|
|
c_slider_double.get() / 100,
|
|
s_slider_double.get() / 100,
|
|
)
|
|
|
|
|
|
b_slider_val, c_slider_val, s_slider_val = get_sliders()
|
|
|
|
# 1 to 100 → 0 to 1
|
|
b_slider = Scale(parent, variable=b_slider_double, from_=0, to=100, orient=HORIZONTAL)
|
|
c_slider = Scale(parent, variable=c_slider_double, from_=0, to=100, orient=HORIZONTAL)
|
|
s_slider = Scale(parent, variable=s_slider_double, from_=0, to=100, orient=HORIZONTAL)
|
|
|
|
show_enhance_button = Button(
|
|
parent,
|
|
text="Preview",
|
|
command=get_sliders,
|
|
bg="yellow",
|
|
)
|
|
|
|
l1 = Label(parent)
|
|
|
|
b_slider.pack(anchor=CENTER)
|
|
c_slider.pack(anchor=CENTER)
|
|
s_slider.pack(anchor=CENTER)
|
|
|
|
show_enhance_button.pack(anchor=CENTER)
|
|
l1.pack()
|
|
|
|
|
|
# def order_pages():
|
|
# global image_files
|
|
# image_files.sort(key=lambda x: int(x.split(".")[0]))
|
|
|
|
|
|
# d'abord faire un dialogue →
|
|
# order les pages (si pas déjà fait) (0000.jpg, 0001.jpg, 0002.jpg, 0003.jpg, 0004.jpg, 0005.jpg, 0006.jpg, 0007.jpg, 0008.jpg, 0009.jpg, 0010.jpg, etc)
|
|
# première / dernière page est elle vide ? (si oui del image)
|
|
# orientation pages paires/impaires correct ?
|
|
# crop (peut switch entre les pages).
|
|
|
|
|
|
def dialog():
|
|
dialog_window = tk.Toplevel(parent)
|
|
dialog_window.title("Dialog")
|
|
dialog_window.geometry("400x300")
|
|
|
|
label = tk.Label(dialog_window, text="Dialog content goes here.")
|
|
label.pack(pady=20)
|
|
|
|
close_button = tk.Button(dialog_window, text="Close", command=dialog_window.destroy)
|
|
close_button.pack(pady=10)
|
|
|
|
|
|
open_button = tk.Button(
|
|
parent,
|
|
anchor="center",
|
|
cursor="hand2",
|
|
text="Selectionner le dossier d'images",
|
|
command=upload_folder,
|
|
)
|
|
open_button.pack(pady=10)
|
|
|
|
parent.mainloop()
|