Mi piacerebbe scrivere un piccolo programma in C # che passi attraverso le mie foto jpeg e, per esempio, li metta in cartelle datate (usando MY dating convention, dammit …).
Qualcuno conosce un modo relativamente facile per ottenere dati EXIF come Data e ora o Esposizione programmaticamente? Grazie!
Dai un’occhiata a questo estrattore di metadati . È scritto in Java ma è stato anche portato su C #. Ho usato la versione Java per scrivere una piccola utility per rinominare i miei file jpeg in base alla data e ai tag del modello. Molto facile da usare.
EDIT metadata-extractor supporta anche .NET. È una libreria molto veloce e semplice per accedere ai metadati da immagini e video.
Supporta pienamente Exif, così come IPTC, XMP e molti altri tipi di metadati da tipi di file tra cui JPEG, PNG, GIF, PNG, ICO, WebP, PSD, …
var directories = ImageMetadataReader.ReadMetadata(imagePath); // print out all metadata foreach (var directory in directories) foreach (var tag in directory.Tags) Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}"); // access the date time var subIfdDirectory = directories.OfType().FirstOrDefault(); var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);
È disponibile tramite NuGet e il codice è su GitHub .
Come suggerito, è ansible utilizzare alcune librerie di terze parti, o farlo manualmente (che non è tanto lavoro), ma il più semplice e flessibile è forse utilizzare la funzionalità integrata in .NET. Per ulteriori vedere:
Proprietà System.Drawing.Image.PropertyItems
Classe System.Drawing.Imaging.PropertyItem
Come: leggere i metadati delle immagini
Dico “è il più flessibile” perché .NET non tenta di interpretare o coalizzare i dati in alcun modo. Praticamente per ogni EXIF ottieni una matrice di byte. Questo può essere buono o cattivo a seconda di quanto controllo tu voglia realmente.
Inoltre, vorrei sottolineare che l’elenco delle proprietà non corrisponde in realtà direttamente ai valori EXIF. EXIF stesso è memorizzato in più tabelle con ID sovrapposti, ma .NET mette tutto in una lista e ridefinisce gli ID di alcuni elementi. Ma fino a quando non ti interessa l’ID EXIF preciso, dovresti stare bene con la mapping .NET.
Ecco un link a un’altra domanda SO simile , che ha una risposta che punta a questo buon articolo su “Reading, writing and photo metadata” in .Net.
È ansible utilizzare TagLib # che viene utilizzato da applicazioni come F-Spot . Oltre a Exif, leggerà una buona quantità di formati di metadati per immagini, audio e video.
Mi piace anche l’API ExifUtils ma è bacato e non è sviluppato triggersmente.
La class immagine ha proprietà PropertyItems e PropertyIdList. Puoi usarli
Lo strumento da riga di comando ExifTool di Phil Harvey funziona con dozzine di formati di immagini, tra cui numerosi formati RAW proprietari, e può manipolare una varietà di formati di metadati tra cui EXIF, GPS, IPTC, XMP, JFIF.
Applicazione molto facile da usare, leggera e impressionante.
Ottenere i dati EXIF da un’immagine JPEG comporta: