Cosa sono i Metadati dalle Immagini
Nel mondo digitale odierno, la privacy è un tema importante, specialmente quando si tratta di condividere immagini online. Ogni foto che scattiamo contiene informazioni invisibili note come dati EXIF (Exchangeable Image File Format), chiamati anche Metadati. Questi dati possono rivelare dettagli sensibili, come la posizione georeferenziata del luogo in cui è stata scattata l’immagine e le impostazioni della fotocamera o il nome dell’autore. Da qui nasce l’esigenza di uno strumento quale lo script Python cleanexif.py. In questo articolo, esploreremo la logica alla base di questo script e forniremo esempi di utilizzo per aiutarti a rimuovere in modo efficiente i dati EXIF dalle tue immagini.
Cos’è cleanexif.py?
cleanexif.py è uno script progettato per cercare e rimuovere i dati EXIF da file immagine in una directory specificata. Lo script offre diverse funzionalità utili, tra cui la possibilità di fare il backup dei file originali, escludere determinate estensioni di file e directory dalla scansione, e registrare le operazioni in un file di log.
Perché Rimuovere i Dati EXIF?
Benchè possano essere utili in molti casi, rimuovere i dati EXIF è fondamentale per proteggere la propria privacy. Prima di caricare foto sui social media o inviarle via email o condividerle attraverso un blog è consigliabile eliminare informazioni potenzialmente compromettenti. Inoltre, alcuni servizi online possono rifiutare immagini con dati EXIF per motivi di sicurezza.
Ecco un esempio di immagine, scaricata tramite motore di ricerca, utilizzata proprio in questo blog e “ripulita” con cleanexif.py, in questo caso si tratta di informazioni prevalentemente tecniche riguardando l’immagine stessa, ma il seti di dati disponibile, può riguardare informazioni molto più personali, quali ad esempio Nome Utente, coordinate geolocalizzate, etc.
Prima:
ExifTool Version Number : 12.96 File Name : privacy-please.jpg Directory : D:/Documenti/immagini File Size : 177 kB File Modification Date/Time : 2024:07:22 13:45:56+02:00 File Access Date/Time : 2024:09:25 12:53:15+02:00 File Creation Date/Time : 2024:09:25 12:53:15+02:00 File Permissions : -rw-rw-rw- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.01 Exif Byte Order : Big-endian (Motorola, MM) Photometric Interpretation : RGB Make : NIKON CORPORATION Camera Model Name : NIKON D80 Orientation : Horizontal (normal) Samples Per Pixel : 3 X Resolution : 72 Y Resolution : 72 Resolution Unit : inches Software : Adobe Photoshop 23.4 (Windows) Modify Date : 2022:07:07 14:51:19 Exposure Time : 1/125 F Number : 1.4 Exposure Program : Aperture-priority AE ISO : 1600 Exif Version : 0221 Date/Time Original : 2007:01:24 11:58:36 Create Date : 2007:01:24 11:58:36 Compressed Bits Per Pixel : 4 Shutter Speed Value : 1/125 Aperture Value : 1.4 Exposure Compensation : 0 Max Aperture Value : 1.4 Metering Mode : Spot Light Source : Unknown Flash : No Flash Focal Length : 50.0 mm Sub Sec Time : 20 Sub Sec Time Original : 20 Sub Sec Time Digitized : 20 Flashpix Version : 0100 Color Space : sRGB Exif Image Width : 1920 Exif Image Height : 1280 Sensing Method : One-chip color area Custom Rendered : Normal Exposure Mode : Auto White Balance : Auto Digital Zoom Ratio : 1 Focal Length In 35mm Format : 75 mm Scene Capture Type : Standard Gain Control : High gain up Contrast : High Saturation : Normal Sharpness : Normal Subject Distance Range : Unknown Compression : JPEG (old-style) Thumbnail Offset : 948 Thumbnail Length : 3098 XMP Toolkit : Adobe XMP Core 7.2-c000 79.566ebc5, 2022/05/09-07:22:29 Creator Tool : Ver.1.00 Metadata Date : 2022:07:07 14:51:19-07:00 Color Mode : RGB ICC Profile Name : sRGB IEC61966-2.1 History : 2022-07-07T14:50:52-07:00.File Privacy_Please_Hotel_Lock_3x2.jpg opened.2022-07-07T14:51:19-07:00.File D:\10-22-2017 D-Drive Files\DonkeyHotey\WhoWhatWhy\Gajda_Privacy\posted\Privacy_Please_Hotel_Lock_3x2.jpg saved. Document ID : 2E6221C20317B13575DF0E8A7019FB0F Instance ID : xmp.iid:602c8262-f052-5a48-9fc4-57906e3f94fe Original Document ID : 2E6221C20317B13575DF0E8A7019FB0F Format : image/jpeg History Action : saved History Instance ID : xmp.iid:602c8262-f052-5a48-9fc4-57906e3f94fe History When : 2022:07:07 14:51:19-07:00 History Software Agent : Adobe Photoshop 23.4 (Windows) History Changed : / Current IPTC Digest : bf2a01135522004279f5c636cfdea9cd Coded Character Set : UTF8 Application Record Version : 0 Date Created : 2007:01:24 Time Created : 11:58:36 IPTC Digest : bf2a01135522004279f5c636cfdea9cd Displayed Units X : inches Displayed Units Y : inches Print Style : Centered Print Position : 0 0 Print Scale : 1 Global Angle : 30 Global Altitude : 30 URL List : Slices Group Name : Privacy_Please_Hotel_Lock_3x2 Num Slices : 1 Pixel Aspect Ratio : 1 Photoshop Thumbnail : (Binary data 3098 bytes, use -b option to extract) Has Real Merged Data : Yes Writer Name : Adobe Photoshop Reader Name : Adobe Photoshop 2022 Photoshop Quality : 12 Photoshop Format : Standard Image Width : 1920 Image Height : 1280 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Aperture : 1.4 Image Size : 1920x1280 Megapixels : 2.5 Shutter Speed : 1/125 Create Date : 2007:01:24 11:58:36.20 Date/Time Original : 2007:01:24 11:58:36.20 Modify Date : 2022:07:07 14:51:19.20 Thumbnail Image : (Binary data 3098 bytes, use -b option to extract) Date/Time Created : 2007:01:24 11:58:36 Light Value : 3.9 Scale Factor To 35 mm Equivalent: 1.5 Circle Of Confusion : 0.020 mm Field Of View : 27.0 deg Focal Length : 50.0 mm (35 mm equivalent: 75.0 mm) Hyperfocal Distance : 89.15 m
Dopo:
ExifTool Version Number : 12.96 File Name : privacy-please.jpg Directory : D:/Documenti/blog/example/images File Size : 175 kB File Modification Date/Time : 2024:09:25 12:53:16+02:00 File Access Date/Time : 2024:09:25 12:52:33+02:00 File Creation Date/Time : 2024:09:25 12:52:33+02:00 File Permissions : -rw-rw-rw- File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.01 Resolution Unit : None X Resolution : 1 Y Resolution : 1 Image Width : 1920 Image Height : 1280 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Image Size : 1920x1280 Megapixels : 2.5
Come Funziona cleanexif.py
Lo script è costruito attorno a funzioni modulari che gestiscono specifiche attività, funziona sia in ambiente Linux, Mac, Windows. Ecco un riepilogo della logica implementata:
1. Scansione delle Directory
Utilizza os.walk per esaminare ricorsivamente una directory specificata, identificando file di tipo immagine.
2. Rimozione dei Dati EXIF
Usa la libreria PIL (Pillow) per aprire i file immagine e rimuovere i dati EXIF, se sono presenti.
3. Backup dei File Originali
Prima di modificare un’immagine, crea un backup, qualora l’utente lo ritenga necessario, in una directory designata, assicurandosi di mantenere una copia dei file originali interessati dall’operazione di rimozione dei metadati.
4. Registrazione delle Operazioni
Le azioni intraprese sono registrate in un file di log, utile per controllare il processo e diagnosticarne eventuali errori.
Esempi di Utilizzo
Perdhè lo script funzioni, occorre che sia installata la libreria Pillow; Per installarla utilizza il seguente comando:
python3 -m pip install Pillow
Installazione delle Dipendenze
Esecuzione Base
Per eseguire lo script, utilizza il seguente comando:
python cleanexif.py /path/to/images
Questo comando avvierà la scansione della directory /path/to/images alla ricerca di file immagine dai quali rimuovere i dati EXIF.
Esempio Completo
Supponiamo di voler scansionare una directory specifica, escludendo alcuni tipi di file e directory. Puoi farlo con il comando:
python cleanexif.py /path/to/images \ --log-path D:\EXIF\logs\example.log \ --backup-path /path/to/backups \ --exclude-exts .png .gif \ --exclude-dirs dir1 dir2 \ --max-log-size 10MB \ --verbose
In dettaglio:
- —log-path: Specifica il percorso del file di log, creando automaticamente la directory se non esiste.
- —backup-path: Indica dove salvare i backup dei file originali.
- —exclude-exts: Esclude file con estensioni .png e .gif dalla scansione.
- —exclude-dirs: Esclude le directory dir1 e dir2 dalla scansione.
- —max-log-size: Limita la dimensione del file di log a 10 MB.
- —verbose: Attiva un output dettagliato durante l’esecuzione.
Esempio di utilizzo tramite Crontab
Programmazione temporale, in questo caso, tramite Crontab, lo script viene eseguito al minuto 30 di ogni ora e serve a ripulire le immagini di questo blog, togliendo l’onere, a chi allega le immagini, di occuparsi della rimozione dei metadati.
30 * * * * /usr/bin/python3 /usr/local/scripts/clenaexif.py /usr/local/apache2.4/websites/blog/wp-content/uploads \
--backup-path /usr/local/cleanexif-backup/blog-image-backup --log-path /var/log --max-log-size 10MB
Esempio di utilizzo tramite file batch Windows
@echo off :: ############## SOLUTIONCAFE.IT set SCRIPT_PATH=E:\Progetti\software\scripts\python\EXIF\cleanexif.py set IMAGES_DIR=D:\Documenti\blog\solutioncafe.it set LOG_PATH=%IMAGES_DIR% set BACKUP_PATH=%IMAGES_DIR%\exifimage-backup set EXCLUDE_DIRS=exifimage-backup set MAX_LOG_SIZE=10MB :: Esegue python "%SCRIPT_PATH%" "%IMAGES_DIR%" --log-path "%LOG_PATH%" --backup-path "%BACKUP_PATH%" --exclude-dirs %EXCLUDE_DIRS% --max-log-size %MAX_LOG_SIZE% --verbose :: Messaggio di completamento echo Operazione completata! pause
Considerazioni finali
Rimuovere i dati EXIF dalle immagini è un passo fondamentale per proteggere la tua privacy online. Lo script cleanexif.py fornisce una soluzione semplice ed efficace per gestire i file immagine. Con la sua versatilità e facilità d’uso, diventerà un alleato prezioso per chiunque desideri mantenere il controllo sulle proprie informazioni personali.
Risorse Aggiuntive
Questo il link per approfondire le funzionalità di Pillow
Questo il link per approfondire le funzionalità di cleanexif.py