diff --git a/assets/images/blog-sadje-ogledalo.webp b/assets/images/blog-sadje-ogledalo.webp new file mode 100644 index 0000000..b085d5a Binary files /dev/null and b/assets/images/blog-sadje-ogledalo.webp differ diff --git a/assets/images/hermina-merc-portret.webp b/assets/images/hermina-merc-portret.webp new file mode 100644 index 0000000..f67caca Binary files /dev/null and b/assets/images/hermina-merc-portret.webp differ diff --git a/assets/images/home-slider-01-morje.webp b/assets/images/home-slider-01-morje.webp new file mode 100644 index 0000000..0e70780 Binary files /dev/null and b/assets/images/home-slider-01-morje.webp differ diff --git a/assets/images/home-slider-02-palme.webp b/assets/images/home-slider-02-palme.webp new file mode 100644 index 0000000..4fd0518 Binary files /dev/null and b/assets/images/home-slider-02-palme.webp differ diff --git a/assets/images/home-slider-03-puscava.webp b/assets/images/home-slider-03-puscava.webp new file mode 100644 index 0000000..4d61083 Binary files /dev/null and b/assets/images/home-slider-03-puscava.webp differ diff --git a/assets/images/home-slider-04-kanjon-svetloba.webp b/assets/images/home-slider-04-kanjon-svetloba.webp new file mode 100644 index 0000000..4073034 Binary files /dev/null and b/assets/images/home-slider-04-kanjon-svetloba.webp differ diff --git a/assets/images/home-slider-05-drevo-soteska.webp b/assets/images/home-slider-05-drevo-soteska.webp new file mode 100644 index 0000000..4b0937c Binary files /dev/null and b/assets/images/home-slider-05-drevo-soteska.webp differ diff --git a/assets/images/home-slider-06-rastlina-pesek.webp b/assets/images/home-slider-06-rastlina-pesek.webp new file mode 100644 index 0000000..3031d0a Binary files /dev/null and b/assets/images/home-slider-06-rastlina-pesek.webp differ diff --git a/assets/images/home-slider-07-papiga.webp b/assets/images/home-slider-07-papiga.webp new file mode 100644 index 0000000..d15f4c0 Binary files /dev/null and b/assets/images/home-slider-07-papiga.webp differ diff --git a/assets/images/home-slider-08-sipine.webp b/assets/images/home-slider-08-sipine.webp new file mode 100644 index 0000000..d86a6f6 Binary files /dev/null and b/assets/images/home-slider-08-sipine.webp differ diff --git a/assets/images/morje-z-napisom.webp b/assets/images/morje-z-napisom.webp new file mode 100644 index 0000000..6bc2871 Binary files /dev/null and b/assets/images/morje-z-napisom.webp differ diff --git a/assets/images/blog-sadje-ogledalo.jpg b/assets/images/original/blog-sadje-ogledalo.jpg similarity index 100% rename from assets/images/blog-sadje-ogledalo.jpg rename to assets/images/original/blog-sadje-ogledalo.jpg diff --git a/assets/images/hermina-merc-portret.jpg b/assets/images/original/hermina-merc-portret.jpg similarity index 100% rename from assets/images/hermina-merc-portret.jpg rename to assets/images/original/hermina-merc-portret.jpg diff --git a/assets/images/home-slider-01-morje.png b/assets/images/original/home-slider-01-morje.png similarity index 100% rename from assets/images/home-slider-01-morje.png rename to assets/images/original/home-slider-01-morje.png diff --git a/assets/images/home-slider-02-palme.jpg b/assets/images/original/home-slider-02-palme.jpg similarity index 100% rename from assets/images/home-slider-02-palme.jpg rename to assets/images/original/home-slider-02-palme.jpg diff --git a/assets/images/home-slider-03-puscava.jpg b/assets/images/original/home-slider-03-puscava.jpg similarity index 100% rename from assets/images/home-slider-03-puscava.jpg rename to assets/images/original/home-slider-03-puscava.jpg diff --git a/assets/images/home-slider-04-kanjon-svetloba.jpg b/assets/images/original/home-slider-04-kanjon-svetloba.jpg similarity index 100% rename from assets/images/home-slider-04-kanjon-svetloba.jpg rename to assets/images/original/home-slider-04-kanjon-svetloba.jpg diff --git a/assets/images/home-slider-05-drevo-soteska.jpg b/assets/images/original/home-slider-05-drevo-soteska.jpg similarity index 100% rename from assets/images/home-slider-05-drevo-soteska.jpg rename to assets/images/original/home-slider-05-drevo-soteska.jpg diff --git a/assets/images/home-slider-06-rastlina-pesek.jpg b/assets/images/original/home-slider-06-rastlina-pesek.jpg similarity index 100% rename from assets/images/home-slider-06-rastlina-pesek.jpg rename to assets/images/original/home-slider-06-rastlina-pesek.jpg diff --git a/assets/images/home-slider-07-papiga.jpg b/assets/images/original/home-slider-07-papiga.jpg similarity index 100% rename from assets/images/home-slider-07-papiga.jpg rename to assets/images/original/home-slider-07-papiga.jpg diff --git a/assets/images/home-slider-08-sipine.jpg b/assets/images/original/home-slider-08-sipine.jpg similarity index 100% rename from assets/images/home-slider-08-sipine.jpg rename to assets/images/original/home-slider-08-sipine.jpg diff --git a/assets/images/morje-z-napisom.jpg b/assets/images/original/morje-z-napisom.jpg similarity index 100% rename from assets/images/morje-z-napisom.jpg rename to assets/images/original/morje-z-napisom.jpg diff --git a/assets/images/portret-2.JPG b/assets/images/original/portret-2.JPG similarity index 100% rename from assets/images/portret-2.JPG rename to assets/images/original/portret-2.JPG diff --git a/assets/images/portret.JPG b/assets/images/original/portret.JPG similarity index 100% rename from assets/images/portret.JPG rename to assets/images/original/portret.JPG diff --git a/assets/images/storitev-supervizija-slap.jpg b/assets/images/original/storitev-supervizija-slap.jpg similarity index 100% rename from assets/images/storitev-supervizija-slap.jpg rename to assets/images/original/storitev-supervizija-slap.jpg diff --git a/assets/images/stran-cenik-tempelj.jpg b/assets/images/original/stran-cenik-tempelj.jpg similarity index 100% rename from assets/images/stran-cenik-tempelj.jpg rename to assets/images/original/stran-cenik-tempelj.jpg diff --git a/assets/images/tempelj.jpg b/assets/images/original/tempelj.jpg similarity index 100% rename from assets/images/tempelj.jpg rename to assets/images/original/tempelj.jpg diff --git a/assets/images/portret-2.webp b/assets/images/portret-2.webp new file mode 100644 index 0000000..e5ff066 Binary files /dev/null and b/assets/images/portret-2.webp differ diff --git a/assets/images/portret.webp b/assets/images/portret.webp new file mode 100644 index 0000000..fd6fb59 Binary files /dev/null and b/assets/images/portret.webp differ diff --git a/assets/images/storitev-supervizija-slap.webp b/assets/images/storitev-supervizija-slap.webp new file mode 100644 index 0000000..c2fd556 Binary files /dev/null and b/assets/images/storitev-supervizija-slap.webp differ diff --git a/assets/images/stran-cenik-tempelj.webp b/assets/images/stran-cenik-tempelj.webp new file mode 100644 index 0000000..41ae124 Binary files /dev/null and b/assets/images/stran-cenik-tempelj.webp differ diff --git a/assets/images/tempelj.webp b/assets/images/tempelj.webp new file mode 100644 index 0000000..86dea46 Binary files /dev/null and b/assets/images/tempelj.webp differ diff --git a/blog/index.html b/blog/index.html index 25282fd..d6130b1 100644 --- a/blog/index.html +++ b/blog/index.html @@ -53,8 +53,8 @@
-
-
+
+
diff --git a/cenik/index.html b/cenik/index.html index f0f93b5..8f19d08 100644 --- a/cenik/index.html +++ b/cenik/index.html @@ -48,7 +48,7 @@
- Tempelj v naravi + Tempelj v naravi
diff --git a/index.html b/index.html index 8dfc313..f2a5ffe 100644 --- a/index.html +++ b/index.html @@ -49,14 +49,14 @@
Morje s skalo v ozadju
- Portret mag. Hermine Merc + Portret mag. Hermine Merc

PSIHOTERAPEVT, VRHUNSKI STROKOVNJAK

@@ -84,7 +84,7 @@
- Pogled na palme in morje + Pogled na palme in morje

@@ -105,7 +105,7 @@
Puščavska pokrajina
@@ -126,7 +126,7 @@
Svetloba, ki sije v kanjon
@@ -144,7 +144,7 @@
Drevo, ki raste v soteski
@@ -162,7 +162,7 @@
Rastlina, ki raste iz peska
@@ -179,7 +179,7 @@
- Barvita papiga na veji + Barvita papiga na veji

Pristno začutiti sebe

@@ -195,7 +195,7 @@
- Peščene sipine + Peščene sipine

Naredite prvi korak

diff --git a/kaj-je-psihoterapija/index.html b/kaj-je-psihoterapija/index.html index 16c4a1a..37ea07d 100644 --- a/kaj-je-psihoterapija/index.html +++ b/kaj-je-psihoterapija/index.html @@ -46,8 +46,8 @@

Kaj je psihoterapija?

-
-
+
+
diff --git a/kontakt/index.html b/kontakt/index.html index a86ff1f..6eb4251 100644 --- a/kontakt/index.html +++ b/kontakt/index.html @@ -69,7 +69,7 @@

Informacije za naročanje

- Portret Hermina Merc + Portret Hermina Merc

Mag. HERMINA MERC
Psihoterapevt Specialist Klinični Psiholog

diff --git a/o-meni/index.html b/o-meni/index.html index 38dfa2c..c241d8e 100644 --- a/o-meni/index.html +++ b/o-meni/index.html @@ -46,7 +46,7 @@

O meni

- Fotografija Hermine Merc + Fotografija Hermine Merc

Kot psihoterapevtka delujem k ozaveščanju, kultiviranju in osmišljanju tako osebnostnega kot duhovnega potenciala posameznika.

diff --git a/optimize_images.py b/optimize_images.py new file mode 100644 index 0000000..df236d7 --- /dev/null +++ b/optimize_images.py @@ -0,0 +1,207 @@ +import os +import argparse +import shutil +from PIL import Image + +# --- Konfiguracija skripte za projekt "Hermina" --- + +# Predpostavka: ta skripta se nahaja v korenski mapi projekta. +PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) + +# Pot do mape, kjer se nahajajo slike, ki jih želimo optimizirati. +IMAGES_DIR_PATH = os.path.join("assets", "images") + +# Ime podmape znotraj IMAGES_DIR_PATH, kamor se bodo shranile originalne slike. +ORIGINAL_IMAGES_SUBDIR_NAME = "original" + +# Mape, ki jih želimo PREGLEDATI za posodobitev referenc na slike. +# '.' pomeni, da začnemo v korenski mapi in pregledamo vse podmape. +DIRECTORIES_TO_SCAN = ['.'] + +# Mape, ki jih želimo IZKLJUČITI iz pregledovanja (za hitrejše delovanje in varnost). +# Skripta ne bo iskala referenc v teh mapah. +DIRECTORIES_TO_EXCLUDE_FROM_SCAN = ['.git', '.gitea', '.vscode', '__pycache__'] + +# Končnice datotek, v katerih iščemo in posodabljamo reference na slike. +FILE_EXTENSIONS_TO_UPDATE = ['.html', '.css', '.js'] + +# Nastavitve optimizacije +WEBP_QUALITY = 85 # Kakovost kompresije za WebP (0-100). Višje = boljša kvaliteta, večja datoteka. +MAX_IMAGE_DIMENSION = 1920 # Slike, večje od te dimenzije (širina ali višina), bodo pomanjšane. 0 za izklop. + +# Končnice slik, ki jih želimo optimizirati. +IMAGE_EXTENSIONS_TO_OPTIMIZE = ['.jpg', '.jpeg', '.png'] + +# Imena datotek, ki jih želimo preskočiti pri optimizaciji (npr. logotipi, ikone). +EXCLUDE_FILES_FROM_OPTIMIZATION = [ + 'favicon.ico' + # Dodajte imena drugih datotek po potrebi, npr. 'logo.png' +] + + +# --- Pomožne funkcije (večinoma nespremenjene) --- + +def optimize_image(image_path, output_path, quality, max_dim, dry_run=False): + """ + Naloži sliko, jo po potrebi pomanjša, optimizira in pretvori v WebP format. + """ + try: + with Image.open(image_path) as img: + # Pretvorba slik s paleto (kot so nekatere PNG) v RGBA za ohranitev prosojnosti. + if img.mode in ('P', 'LA'): + img = img.convert("RGBA") + + if max_dim > 0 and (img.width > max_dim or img.height > max_dim): + print(f" Pomanjšujem sliko {os.path.basename(image_path)} iz {img.width}x{img.height} ...", end="") + img.thumbnail((max_dim, max_dim), Image.Resampling.LANCZOS) + print(f" na {img.width}x{img.height}") + else: + print(f" Obdelujem sliko {os.path.basename(image_path)} ({img.width}x{img.height})...", end="") + + if not dry_run: + img.save(output_path, "webp", quality=quality, method=6) + print(f" Shrani v {os.path.basename(output_path)} (kvaliteta: {quality}).") + else: + print(f" DRY RUN: Shranil bi v {os.path.basename(output_path)} (kvaliteta: {quality}).") + + return True + except FileNotFoundError: + print(f" Napaka: Izvorna slika '{image_path}' ni najdena.") + return False + except Exception as e: + print(f" Napaka pri optimizaciji slike '{image_path}': {e}") + return False + +def update_file_references(file_path, old_filename, new_filename, dry_run=False): + """ + V dani datoteki zamenja vse pojavitve starega imena slike z novim. + """ + try: + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + except Exception: + # Ignoriramo binarne ali neberljive datoteke + return False + + if old_filename in content: + updated_content = content.replace(old_filename, new_filename) + if not dry_run: + try: + with open(file_path, 'w', encoding='utf-8') as f: + f.write(updated_content) + print(f" Posodobljene reference v: '{os.path.relpath(file_path, PROJECT_ROOT)}'") + return True + except Exception as e: + print(f" Napaka pri zapisovanju v '{file_path}': {e}") + return False + else: + print(f" DRY RUN: Posodobil bi reference v: '{os.path.relpath(file_path, PROJECT_ROOT)}'") + return True + return False + +def find_files_to_update(scan_dirs, exclude_dirs): + """ + Rekurzivno poišče vse datoteke z ustreznimi končnicami, pri tem pa ignorira izključene mape. + """ + found_files = [] + for directory in scan_dirs: + scan_path = os.path.join(PROJECT_ROOT, directory) + for dirpath, dirnames, filenames in os.walk(scan_path): + # Učinkovit način za izključitev map: odstranimo jih iz seznama za nadaljnje pregledovanje + dirnames[:] = [d for d in dirnames if d not in exclude_dirs] + + for filename in filenames: + if any(filename.endswith(ext) for ext in FILE_EXTENSIONS_TO_UPDATE): + found_files.append(os.path.join(dirpath, filename)) + return sorted(list(set(found_files))) + + +# --- Glavna funkcija --- + +def main(): + parser = argparse.ArgumentParser(description="Optimizira slike v WebP in posodobi reference v projektu.") + parser.add_argument("--dry-run", action="store_true", help="Prikaže, katere spremembe bi se zgodile, a jih ne izvede.") + args = parser.parse_args() + + images_full_path = os.path.join(PROJECT_ROOT, IMAGES_DIR_PATH) + original_images_full_path = os.path.join(images_full_path, ORIGINAL_IMAGES_SUBDIR_NAME) + + # Dodamo mapo z originali v seznam za izključitev, da ne skeniramo še tam. + DIRECTORIES_TO_EXCLUDE_FROM_SCAN.append(ORIGINAL_IMAGES_SUBDIR_NAME) + + if not os.path.isdir(images_full_path): + print(f"Napaka: Mapa s slikami '{images_full_path}' ne obstaja. Preverite pot v konfiguraciji.") + return + + if not args.dry_run: + os.makedirs(original_images_full_path, exist_ok=True) + print(f"Mapa za originale: '{original_images_full_path}'") + else: + print(f"DRY RUN: Mapa za originale bi bila '{original_images_full_path}'.") + + optimized_images_map = [] + + print("\n--- FAZA 1: OPTIMIZACIJA SLIK ---") + for filename in os.listdir(images_full_path): + file_path = os.path.join(images_full_path, filename) + + # Preskoči podmape (kot je 'original') in datoteke, ki niso datoteke + if not os.path.isfile(file_path): + continue + + name, ext = os.path.splitext(filename) + ext = ext.lower() + + if filename in EXCLUDE_FILES_FROM_OPTIMIZATION: + print(f"- Preskakujem izključeno datoteko: '{filename}'") + continue + + if ext in IMAGE_EXTENSIONS_TO_OPTIMIZE: + new_filename = f"{name}.webp" + new_file_path = os.path.join(images_full_path, new_filename) + + # Preveri, če WebP verzija že obstaja in je novejša + if os.path.exists(new_file_path) and os.path.getmtime(new_file_path) > os.path.getmtime(file_path): + print(f"- WebP '{new_filename}' že obstaja in je posodobljen. Preskakujem optimizacijo.") + optimized_images_map.append({'old': filename, 'new': new_filename}) + continue + + if optimize_image(file_path, new_file_path, WEBP_QUALITY, MAX_IMAGE_DIMENSION, args.dry_run): + optimized_images_map.append({'old': filename, 'new': new_filename}) + if not args.dry_run: + try: + shutil.move(file_path, os.path.join(original_images_full_path, filename)) + print(f" Original '{filename}' premaknjen v '{ORIGINAL_IMAGES_SUBDIR_NAME}/'.") + except Exception as e: + print(f" NAPAKA pri premikanju '{filename}': {e}") + else: + print(f" DRY RUN: Original '{filename}' bi bil premaknjen v '{ORIGINAL_IMAGES_SUBDIR_NAME}/'.") + + if not optimized_images_map: + print("\nNi bilo najdenih novih slik za optimizacijo.") + + print("\n--- FAZA 2: POSODABLJANJE REFERENC V PROJEKTU ---") + + files_to_scan = find_files_to_update(DIRECTORIES_TO_SCAN, DIRECTORIES_TO_EXCLUDE_FROM_SCAN) + + if not files_to_scan: + print("Ni najdenih .html, .css ali .js datotek za pregled.") + else: + print(f"Najdenih {len(files_to_scan)} datotek za pregled...") + + updated_files_count = 0 + for file_path in files_to_scan: + file_was_updated = False + for img_info in optimized_images_map: + if update_file_references(file_path, img_info['old'], img_info['new'], args.dry_run): + file_was_updated = True + + if file_was_updated: + updated_files_count += 1 + + print(f"\nPregledanih je bilo {len(files_to_scan)} datotek.") + print(f"Posodobljenih je bilo {updated_files_count} datotek.") + print("\n--- SKRIPTA JE ZAKLJUČILA Z DELOM ---") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/storitve/index.html b/storitve/index.html index 6244c8a..fa4c968 100644 --- a/storitve/index.html +++ b/storitve/index.html @@ -48,7 +48,7 @@
- Morje z napisom Energy of Eternal Life + Morje z napisom Energy of Eternal Life