Skip to content

Commit d374df0

Browse files
committed
Fixing the .ico problem
1 parent 6a32506 commit d374df0

6 files changed

Lines changed: 19 additions & 17 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<h1 align="center">
66
<br>
77
<a href="Bulk folder">
8-
<img src="./src/assets/logo.png" width="450" height="400" alt="Bulk folder logo" >
8+
<img src="./src/assets/logo_readme.png" width="450" height="400" alt="Bulk folder logo" >
99
</a>
1010
<br>
1111
Bulk folder

src/assets/demo.png

17.3 KB
Loading

src/assets/logo.ico

-9.92 KB
Binary file not shown.

src/assets/logo.png

-37.2 KB
Loading

src/assets/logo_readme.png

240 KB
Loading

src/bulkfolder/ui/app.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -181,35 +181,37 @@ def _ensure_logo_exists(png_path: Path):
181181
ico_path = png_path.with_suffix(".ico")
182182

183183
if not png_path.exists():
184-
return # Si tu n'as pas le PNG, on ne peut rien faire
184+
return
185185

186186
try:
187-
# 1. Ouvrir ton PNG original
187+
# On ouvre ton PNG
188188
img = Image.open(png_path).convert("RGBA")
189189

190-
# 2. "Auto-crop" : On enlève tout le vide transparent autour du logo
190+
# ÉTAPE CLÉ : On enlève les bordures vides si ton PNG en a
191191
bbox = img.getbbox()
192192
if bbox:
193193
img = img.crop(bbox)
194194

195-
# 3. Créer un canvas carré de 256x256 (Taille max Windows)
196-
size = 256
197-
new_img = Image.new("RGBA", (size, size), (0, 0, 0, 0))
195+
# On crée une liste des tailles standards Windows
196+
# La taille 256 est celle du bureau / La taille 32-48 est celle de la barre des tâches
197+
sizes = [256, 128, 64, 48, 32, 16]
198+
layers = []
198199

199-
# 4. Redimensionner ton logo pour qu'il touche presque les bords (98% de la taille)
200-
inner_size = int(size * 0.98)
201-
img.thumbnail((inner_size, inner_size), Image.Resampling.LANCZOS)
200+
for s in sizes:
201+
# On redimensionne proprement pour chaque taille
202+
resized = img.resize((s, s), Image.Resampling.LANCZOS)
203+
layers.append(resized)
202204

203-
# Centrer le logo sur le canvas
204-
offset = ((size - img.size[0]) // 2, (size - img.size[1]) // 2)
205-
new_img.paste(img, offset, img)
205+
# On sauvegarde l'ICO en incluant TOUTES ces couches
206+
# C'est ce qui garantit que l'icône "match" le PNG partout
207+
layers[0].save(ico_path, format="ICO", append_images=layers[1:])
206208

207-
# 5. Sauvegarder par-dessus ton .ico avec TOUTES les tailles Windows
208-
# C'est la couche (256, 256) qui rend l'icône "grande" sur le bureau
209-
new_img.save(ico_path, format="ICO", sizes=[(256, 256), (128, 128), (64, 64), (48, 48), (32, 32), (16, 16)])
209+
print("ICO synchronisé avec le PNG (taille max).")
210+
except Exception as e:
211+
print(f"Erreur synchro : {e}")
210212

211213
except Exception as e:
212-
print(f"Erreur lors de l'optimisation de l'icône : {e}")
214+
print(f"Erreur d'agrandissement de l'icône : {e}")
213215

214216
def _show_main_window(self):
215217
try: self.splash.destroy()

0 commit comments

Comments
 (0)