-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpng_converter.py
More file actions
47 lines (41 loc) · 1.95 KB
/
Copy pathpng_converter.py
File metadata and controls
47 lines (41 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Conversione ricorsiva di tutte le immagini PNG in JPEG all'interno di una cartella specificata, gestendo la trasparenza e rimuovendo i file PNG originali.
import os
from PIL import Image
def convert_png_to_jpeg(root_folder):
for dirpath, _, filenames in os.walk(root_folder):
for filename in filenames:
if filename.lower().endswith(".png"):
png_path = os.path.join(dirpath, filename)
jpg_filename = os.path.splitext(filename)[0] + ".jpg"
jpg_path = os.path.join(dirpath, jpg_filename)
try:
with Image.open(png_path) as img:
if img.mode in ("RGBA", "LA"):
# Sfondo bianco per immagini con trasparenza
background = Image.new("RGB", img.size, (255, 255, 255))
background.paste(img, mask=img.split()[-1]) # Usa l'alpha come maschera
background.save(jpg_path, "JPEG")
else:
# Nessuna trasparenza, conversione diretta
img.convert("RGB").save(jpg_path, "JPEG")
os.remove(png_path)
print(f"[✔] Convertito: {png_path} → {jpg_path}")
except Exception as e:
print(f"[!] Errore con il file {png_path}: {e}")
def main():
folder = input("Inserisci il percorso della cartella da analizzare: ").strip()
if not os.path.isdir(folder):
print("Percorso non valido. Uscita.")
return
convert_png_to_jpeg(folder)
print("Operazione completata.")
if __name__ == "__main__":
while True:
main()
scelta = input("\nUtilizza di nuovo lo script digitando 1 o premi 0 per ritornare a main.py: ").strip()
if scelta == '1':
continue
elif scelta == '0':
break
else:
print("Scelta non valida. Inserire 1 o 0.")