EXIF (Exchangeable Image File Format) to standard określający formaty obrazu i dźwięku używane głównie przez cyfrowe aparaty fotograficzne i skanery. Dane EXIF obejmują informacje o znakowaniu i metadanych dotyczące przechwyconego pliku obrazu. Metadane mogą zawierać informacje, takie jak marka aparatu, model, czas otwarcia migawki, data i godzina, przysłona, czas ekspozycji, rozdzielczość X, rozdzielczość Y. itp.
Jeśli chcesz programowo zarządzać, wyodrębniać, aktualizować lub usuwać dane EXIF swoich obrazów, ten artykuł jest dla Ciebie. W tym artykule omówiono następujące sposoby manipulowania danymi EXIF w Javie:
- Wyodrębnij dane EXIF - Przeglądarka danych EXIF
- Wyodrębnij wszystkie tagi EXIF z obrazów
- Zaktualizuj właściwości EXIF
- Usuń metadane EXIF
Biblioteka manipulacji metadanymi Java

GroupDocs.Metadata for Java to łatwy w obsłudze interfejs Java API do zarządzania metadanymi. Ma możliwość nie tylko wyodrębniania metadanych z obrazów takich jak JPG, PNG lub WebP, ale także może dodawać, edytować, aktualizować i usuwać metadane z obrazów i innych dokumentów za pomocą różnych opcji.
Używam tego interfejsu API w tym artykule, więc upewnij się, że pobierz lub zintegruj go ze swoimi aplikacjami opartymi na Maven, dodając po prostu następujące konfiguracje do pliku pom.xml.
Repozytorium i zależności
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-metadata</artifactId>
<version>20.5</version>
<classifier>javadoc</classifier>
</dependency>
Wyodrębnij dane EXIF z obrazów w Javie - Przeglądarka metadanych
Możesz odczytać właściwości danych EXIF, wykonując proste czynności. Zacznijmy od wyodrębnienia danych EXIF z tego zdjęcia Wieży Eiffla. Wybrałem plik JPG jako przykładowy obraz, możesz użyć dowolnego ze swoich plików, niezależnie od tego, czy jest to PNG, WebP, BMP, GIF czy TIFF.

- 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 pakiet EXIF, wywołując metodę getExifPackage().
- Po uzyskaniu pakietu EXIF możesz uzyskać właściwości EXIF obrazu, takie jak marka, model, szerokość, długość, data-godzina itp., Jak pokazano w poniższym przykładzie kodu Java.
// Extract EXIF Data Package Information from image in Java
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
// Extract EXIF Package
ExifPackage exifPackage = root.getExifPackage();
System.out.println("Make : " + exifPackage.getMake());
System.out.println("Model : " + exifPackage.getModel());
System.out.println("Width : " + exifPackage.getImageWidth());
System.out.println("Length : " + exifPackage.getImageLength());
System.out.println("DateTime : " + exifPackage.getDateTime());
}
}
Oto informacje EXIF, które otrzymasz w wyniku powyższego kodu.
Make : NIKON CORPORATION
Model : NIKON D3000
Width : 640
Length : 424
DateTime : 2014:08:09 10:35:13
Aby uzyskać więcej informacji o pakietach IFD (Image File Directory) i GPS (Global Positioning System), wystarczy wywołać odpowiednie metody pakietu EXIF, tj. getExifIfdPackage() lub getGpsPackage(). Z tych pakietów możesz wyodrębnić więcej informacji, takich jak;
- Numer seryjny urządzenia do przechwytywania obrazu
- Nazwa właściciela aparatu
- Komentarze użytkowników
- Wysokość
- Szerokość
- Długość geograficzna
- itp.
Oto kod, który możesz dodać w powyższej metodzie, aby wyświetlić dane EXIF wraz z informacjami IFD i GPS.
// EXIF IFD Package
ExifIfdPackage exifIfdPackage = exifPackage.getExifIfdPackage();
System.out.println("BodySerialNumber : " + exifIfdPackage.getBodySerialNumber());
System.out.println("CameraOwnerName : " + exifIfdPackage.getCameraOwnerName());
System.out.println("UserComment : " + exifIfdPackage.getUserComment());
// EXIF GPS Information Package
ExifGpsPackage exifGpsPackage = exifPackage.getGpsPackage();
System.out.println("getAltitude : " + exifGpsPackage.getAltitude());
System.out.println("Latitude Ref : " + exifGpsPackage.getLatitudeRef());
System.out.println("LongitudeRef : " + exifGpsPackage.getLongitudeRef());
Przeczytaj wszystkie tagi EXIF obrazów za pomocą Java
Jeśli chcesz pokazać lub wyodrębnić wszystkie właściwości EXIF dowolnego obrazu lub pliku, możesz to zrobić w krokach podobnych do powyższych przykładów:
- Wystarczy załadować plik za pomocą konstruktora Metadata.
- Pobierz pakiet główny EXIF, wywołując metodę getRootPackage().
- Pobierz pakiet EXIF, wywołując metodę getExifPackage().
- Przejrzyj pakiet EXIF, aby uzyskać żądane pary nazwa-wartość.
- Podobnie pobierz pakiety IFD i GPS i wyświetl jego klucze i wartości.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
if (root.getExifPackage() != null) {
String pattern = "%s = %s";
// Reading all EXIF tags.
for (TiffTag tag : root.getExifPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
// Extract all EXIF IFD tags.
for (TiffTag tag : root.getExifPackage().getExifIfdPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
// Extract all EXIF GPS tags
for (TiffTag tag : root.getExifPackage().getGpsPackage().toList()) {
System.out.println(String.format(pattern, tag.getName(), tag.getValue()));
}
}
}
Zaktualizuj właściwości EXIF w Javie
Możesz nawet łatwo zmienić istniejące dane EXIF dowolnego obrazu lub dowolnego dokumentu. Kroki są proste:
Zaktualizuj pakiet EXIF
- Pobierz pakiet EXIF, wywołując metodę getExifPackage().
- Użyj metod ustawiających, takich jak;
- ustawCopyright() - to set updated copyrights information.
- setImageDescription() - to set description of the image.
- Podobnie możesz ustawić wartości Artysty, Marka, Model, Oprogramowanie, Szerokość i wysokość obrazu, Data, Czas itp.
Zaktualizuj pakiet EXIF IFD
Podobnie jak w przypadku aktualizacji pakietu EXIF, można aktualizować właściwości pakietów EXIF IFD i GPS. Odwiedź klasę ExifIfdPackage lub ExifGpsPackage, aby dowiedzieć się, ile możesz dostosować do swoich cennych obrazów i dokumentów.
// Update/Set new values in EXIF Data (EXIF Package and EXIF IFD Package).
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
// Set the EXIF package if it's missing
if (root.getExifPackage() == null) {
root.setExifPackage(new ExifPackage());
}
ExifPackage exifPackage = root.getExifPackage();
// Setting the desired values in EXIF Package and EXIF IFD Package.
exifPackage.setCopyright("Copyright (C) 2011-2020 GroupDocs. All Rights Reserved.");
exifPackage.setImageDescription("Eiffel Tower for EXIF");
exifPackage.setSoftware("GroupDocs.Metadata");
exifPackage.getExifIfdPackage().setBodySerialNumber("GD-2020");
exifPackage.getExifIfdPackage().setCameraOwnerName("GroupDocs");
exifPackage.getExifIfdPackage().setUserComment("Nice image captured in 2014");
metadata.save("eiffel-tower-updated.jpg");
}
Usuń metadane EXIF z obrazów w Javie
Jest to bardzo proste, jeśli chcesz usunąć pakiet EXIF z dowolnego pliku, po prostu ustaw jego pakiet EXIF na wartość null, wywołując setExifPackage(null) pakietu głównego.
// Removing the EXIF data from an image.
try (Metadata metadata = new Metadata("eiffel-tower.jpg")) {
IExif root = (IExif) metadata.getRootPackage();
root.setExifPackage(null);
metadata.save("eiffel-tower-no-exif.jpg");
}
Obsługiwane obrazy i inne formaty
Oto formaty plików obsługiwane obecnie przez GroupDocs.Metadata. 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
- Przykłady kodu źródłowego. Java | .NET
- GroupDocs.Metadata – Rozwiązanie do zarządzania metadanymi
Porozmawiajmy więcej @ Bezpłatne forum pomocy.