Aveam vreo 10 GB de poze pe calculator și m-am gândit că ar fi momentul să fac puțină ordine. Două probleme de rezolvat: metadatele EXIF care conțin locație GPS, model de cameră și tot felul de informații personale, și formatul - JPEG și PNG ocupă mult mai mult spațiu decât ar trebui.
Soluția evidentă era un script Python care să rezolve ambele probleme dintr-o singură comandă. Am scris strip-meta, un instrument de terminal care caută imagini recursiv într-un director, le convertește în WebP la quality 90 (vizual identic cu JPEG la quality 85, dar mult mai mic) și elimină toate metadatele în același timp.
Ce face concret
- Convertește JPEG, PNG, BMP și altele în WebP quality 90, cu metadatele eliminate
- Fișierele WebP care deja există și au metadate sunt curățate fără reconversie
- Fișierele deja curate sunt sărite automat la rulări repetate
- Dacă există
foto.jpgșifoto.pngîn același folder, devinfoto.webpșifoto1.webp- fără suprascrieri - Numele fișierelor sunt curățate automat: emoji și caractere speciale dispar, literele românești rămân
- Fișierele corupte sunt șterse (nu pot fi recuperate oricum)
- Symlink-urile, GIF-urile, TIFF-urile, RAW-urile și ICO-urile sunt ignorate
- Directoarele fără permisiune de scriere sunt ignorate și raportate
- Fișierele deschise de alte programe sunt sărite
- Fișierele read-only sunt convertite, dar originalul nu poate fi șters - e notat în raport
- Dacă scriptul e întrerupt brusc, originalele rămân intacte; la rularea următoare, fișierele
.webp.tmporfane sunt șterse automat înainte de a începe
La final afișează un raport complet: ce s-a convertit, ce s-a sărit și de ce, ce erori au apărut, și cât spațiu s-a economisit.
Instalare
Necesită doar Pillow, care probabil e deja instalat:
pip install pillow --break-system-packages
Apoi:
sudo cp strip-meta.py /usr/local/bin/strip-meta
sudo chmod +x /usr/local/bin/strip-meta
Utilizare
# Procesează recursiv tot folderul
strip-meta ~/Poze
# Simulare - afișează ce s-ar face fără să modifice nimic
strip-meta ~/Poze --dry-run
# Păstrează fișierele originale după conversie
strip-meta ~/Poze --pastreaza
# Face copii .bak înainte de conversie
strip-meta ~/Poze --backup
# Doar folderul dat, fără subdirectoare
strip-meta ~/Poze --no-recursiv
# Mod silențios - afișează doar raportul final
strip-meta ~/Poze -q
Codul sursă
Reducerea de spațiu depinde mult de ce ai în folder - la mine JPEG-urile s-au redus cu ~88% și PNG-urile cu ~70%. Pe 10 GB de poze rezultatul a fost undeva la 2-3 GB.
Dacă găsiți cazuri neacoperite sau comportamente ciudate, lăsați un mesaj mai jos.