import os from PIL import Image, UnidentifiedImageError from shutil import copy2 # Ścieżki katalogów input_folder = "src/main/resources/static/zaklik-public-images" # Folder źródłowy output_folder = "src/main/resources/static/zaklik-public-images" # Folder docelowy # Funkcja kompresująca obrazy def compress_image(input_path, output_path): try: with Image.open(input_path) as img: img_format = img.format # Zachowaj format pliku if img_format in ["JPEG", "PNG"]: img.save(output_path, optimize=True, quality=15) else: copy2(input_path, output_path) # Kopiuj bez zmian, jeśli format nie jest obsługiwany except UnidentifiedImageError: print(f"Nie rozpoznano formatu obrazu: {input_path}") # Funkcja do przetwarzania plików w folderze def process_folder(input_folder, output_folder): for root, _, files in os.walk(input_folder): for file in files: # Ścieżka do pliku wejściowego input_path = os.path.join(root, file) # Tworzenie ścieżki docelowej z odpowiednią strukturą katalogów relative_path = os.path.relpath(root, input_folder) target_dir = os.path.join(output_folder, relative_path) os.makedirs(target_dir, exist_ok=True) # Obsługa plików już skompresowanych if "(compressed)" in file: continue if "properties" in file: continue # Generowanie nazwy pliku wyjściowego name, ext = os.path.splitext(file) output_file = f"{name}(compressed){ext}" output_path = os.path.join(target_dir, output_file) # Sprawdzenie, czy skompresowany plik już istnieje if os.path.exists(output_path): print(f"Pominięto, plik już istnieje: {output_path}") continue # Kompresja pliku print(f"Kompresowanie: {input_path} -> {output_path}") compress_image(input_path, output_path) # Wykonanie skryptu process_folder(input_folder, output_folder)