W poprzednim poście omówiliśmy, jak radzić sobie z danymi EXIF obrazów w Javie. Tutaj dzisiaj przyjrzymy się osiągnięciu tego samego, ale w języku C#. Jeśli nie odwiedziłeś ostatniego posta, ale chcesz programowo wyodrębnić, zaktualizować, dodać lub usunąć dane EXIF swoich obrazów w języku C#, ten artykuł przeprowadzi Cię przez to. Omówimy następujące sposoby manipulowania danymi EXIF w języku C#:
- Odczyt danych EXIF
- Odczytaj wszystkie tagi EXIF z obrazu
- Zaktualizuj właściwości EXIF
- Usuń metadane EXIF
Biblioteka C# zarządzania metadanymi
GroupDocs.Metadata for .NET to API .NET do zarządzania metadanymi. Ma długą listę funkcji dla szerokiej gamy obsługiwanych formatów plików. Ma możliwość nie tylko wyodrębniania metadanych z obrazów, ale także dodawania, edytowania, aktualizowania i usuwania metadanych z obrazów i dokumentów za pomocą różnych opcji.
W tym artykule będziemy używać tego interfejsu API, więc pamiętaj, aby pobrać jego pliki binarne lub zainstalować interfejs API z NuGet.
Czytaj dane EXIF z obrazów w C#
Możesz łatwo odczytać właściwości danych EXIF, wykonując wymienione kroki. Zaczynając od wyodrębnienia danych EXIF z tego zdjęcia, 93-metrowej Statuy Wolności. Tutaj użyjemy pliku JPG jako przykładowego obrazu, jednak możemy użyć dowolnego pliku, czy to PNG, WebP, BMP, GIF, TIFF, czy dowolnego innego z obsługiwanych formatów plików wymienionych na końcu Ten artykuł.
- Załaduj plik źródłowy obrazu zawierający informacje o danych EXIF, używając konstruktora klasy Metadata.
- Pobierz jego pakiet główny, wywołując metodę GetRootPackage().
- Z pakietu głównego pobierz jego ExifPackage z jego właściwości ExifPackage.
- Po uzyskaniu pakietu EXIF możesz teraz uzyskać dostęp do właściwości EXIF obrazu; jak marka, model, szerokość, długość, data i godzina, prawa autorskie, oprogramowanie itp., jak pokazano poniżej w przykładzie kodu C#.
// Extract EXIF Data Package Information from image in C#
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null && root.ExifPackage != null)
{
Console.WriteLine(root.ExifPackage.Make);
Console.WriteLine(root.ExifPackage.Model);
Console.WriteLine(root.ExifPackage.ImageWidth);
Console.WriteLine(root.ExifPackage.ImageLength);
Console.WriteLine(root.ExifPackage.DateTime);
}
}
Powyższy kod wyświetli następujące dostępne informacje EXIF dostarczonego obrazu JPG.
Make : NIKON CORPORATION
Model : NIKON D7200
Width : 640
Length : 384
DateTime : 2018:07:06 19:31:05
Odczyt EXIF IFD i informacji GPS obrazu
Dane EXIF obejmują również informacje Exif IFD (katalog plików obrazów) i GPS (globalny system pozycjonowania). Teraz, aby uzyskać informacje o pakietach IFD i GPS, wystarczy uzyskać dostęp do odpowiednich właściwości pakietu EXIF, tj. ExifIfdPackage lub GpsPackage. Z tych pakietów można wydobyć znacznie więcej informacji niż wymieniono poniżej:
- Numer seryjny urządzenia
- Nazwa właściciela aparatu
- Wzór CFA
- Prędkość
- Kierunek obrazu
- Data stempla
- Informacje o okolicy
- Wysokość
- Szerokość
- Długość geograficzna
- itp.
Poniższy kod można dodać w powyższej metodzie, aby wyświetlić dane EXIF wraz z informacjami IFD i GPS.
// Display EXIF IFD Package Properties like Serial Number and Camera Owner.
Console.WriteLine(root.ExifPackage.ExifIfdPackage.BodySerialNumber);
Console.WriteLine(root.ExifPackage.ExifIfdPackage.CameraOwnerName);
Console.WriteLine(root.ExifPackage.ExifIfdPackage.UserComment);
// Display EXIF GPS Information like Latitude, Longitude, etc.
Console.WriteLine(root.ExifPackage.GpsPackage.Altitude);
Console.WriteLine(root.ExifPackage.GpsPackage.LatitudeRef);
Console.WriteLine(root.ExifPackage.GpsPackage.LongitudeRef);
Przeczytaj wszystkie tagi EXIF obrazów w C#
Możesz wyodrębnić wszystkie właściwości EXIF z dowolnego obrazu, możesz to zrobić w prawie podobny sposób jak powyżej:
- Załaduj obraz za pomocą konstruktora Metadata.
- Pobierz pakiet główny, wywołując metodę GetRootPackage().
- Pobierz pakiet EXIF z właściwości ExifPackage pakietu głównego.
- Iteruj pakiet EXIF i uzyskaj żądane pary nazwa-wartość.
- Podobnie, pobierz pakiety IFD i GPS, aby wyświetlały swoje klucze i wartości.
// Extract all EXIF Metadata from the image
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null && root.ExifPackage != null)
{
const string pattern = "{0} = {1}";
// Read all EXIF Package Tags and values.
foreach (TiffTag tag in root.ExifPackage.ToList()) {
Console.WriteLine(pattern, tag.Name, tag.Value);
}
// Read all EXIF IFD Package Tags and values.
foreach (TiffTag tag in root.ExifPackage.ExifIfdPackage.ToList()) {
Console.WriteLine(pattern, tag.Name, tag.Value);
}
// Read all EXIF GPS Package Tags and values.
foreach (TiffTag tag in root.ExifPackage.GpsPackage.ToList()) {
Console.WriteLine(pattern, tag.Name, tag.Value);
}
}
}
Zaktualizuj właściwości EXIF w C#
Możesz łatwo zmienić istniejące dane EXIF dowolnego obrazu. Oto kroki, które możesz wykonać:
Zaktualizuj pakiet EXIF
- Pobierz pakiet główny, wywołując metodę GetRootPackage().
- Ustaw właściwości ExifPackage, przypisując nowe wartości do odpowiednich właściwości, na przykład przypisz nową wartość do:
- root.ExifPackage.Copyright - aby ustawić zaktualizowane informacje o prawach autorskich.
- Podobnie możesz ustawić wartości artysty, marki, modelu, oprogramowania, szerokości i wysokości obrazu, daty i godziny itp.
Zaktualizuj pakiet EXIF IFD
Podobnie jak w przypadku ustawiania właściwości pakietu EXIF, możemy aktualizować właściwości pakietów EXIF IFD i GPS.
- Przypisz wartość do root.ExifPackage.ExifIfdPackage.CameraOwnerName, aby ustawić właściciela kamery.
Możesz odwiedzić klasy ExifIfdPackage lub ExifGpsPackage, aby dowiedzieć się, ile możesz dostosować do swoich obrazów.
// Update or change new values in EXIF Data (EXIF Package & EXIF IFD Package).
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null)
{
// Set the EXIF package if it is missing
if (root.ExifPackage == null) {
root.ExifPackage = new ExifPackage();
}
// Setting the desired values in EXIF Package and EXIF IFD Package.
root.ExifPackage.Copyright = "Copyright (C) 2011-2020 GroupDocs. All Rights Reserved.";
root.ExifPackage.ImageDescription = "Statue of Liberty for EXIF Data";
root.ExifPackage.Software = "GroupDocs.Metadata for .NET";
root.ExifPackage.ExifIfdPackage.BodySerialNumber = "GD-2020";
root.ExifPackage.ExifIfdPackage.CameraOwnerName = "GroupDocs";
root.ExifPackage.ExifIfdPackage.UserComment = "Nice image captured in 2018";
metadata.Save("statue-of-liberty-updated.jpg");
}
}
Usuń metadane EXIF z obrazów w C#
Jeśli chcesz usunąć pakiet EXIF z dowolnego pliku, po prostu ustaw jego właściwość ExifPackage na wartość null.
// Removing the EXIF data from an image.
using (Metadata metadata = new Metadata("statue-of-liberty.jpg"))
{
IExif root = metadata.GetRootPackage() as IExif;
if (root != null)
{
root.ExifPackage = null;
metadata.Save("statue-of-liberty-no-exif.jpg");
}
}
Obsługiwane obrazy i inne formaty
Oto formaty plików obsługiwane obecnie przez GroupDocs.Metadata dla danych EXIF dotyczących obrazów, plików audio i wideo. Zawsze możesz odwiedzić dokumentację, aby uzyskać zaktualizowane informacje.
Typ dokumentu | Formaty plików |
---|---|
Obrazy | BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF |
Audio i wideo | MP3, WAV, AVI, MOV/QT, FLV, ASF, DICOM |
Zobacz więcej o GroupDocs.Metadata
- Dokumentacja - .NET | Java
- Przykłady kodu źródłowego
- Odniesienie do interfejsu API
- GroupDocs.Metadata – Rozwiązanie do zarządzania metadanymi
Porozmawiajmy więcej @ Bezpłatne forum pomocy.