EXIF (Exchangeable Image File Format) is de standaard om de beeld- en geluidsformaten te specificeren die voornamelijk worden gebruikt door digitale camera’s en scanners. EXIF-gegevens bevatten de tagging- en metadata-informatie over het vastgelegde afbeeldingsbestand. Metagegevens kunnen informatie bevatten zoals cameramerk, model, sluitertijd, datum en tijd, diafragma, belichtingstijd, X-resolutie, Y-resolutie. enz.

Als u EXIF-gegevens van uw afbeeldingen programmatisch wilt beheren, extraheren, bijwerken of verwijderen, dan is dit artikel iets voor u. Dit artikel behandelt de volgende manieren om te manipuleren met EXIF-gegevens in Java:

Java Metadata Manipulation Library

Metadata Java API door GroupDocs

GroupDocs.Metadata for Java is een gebruiksvriendelijke Java API voor metadatabeheer. Het heeft niet alleen de mogelijkheid om metadata te extraheren uit afbeeldingen zoals JPG, PNG of WebP, maar het kan ook metadata toevoegen, bewerken, bijwerken en verwijderen uit de afbeeldingen en andere documenten met verschillende opties.

Ik gebruik deze API in dit artikel, dus zorg ervoor dat je deze downloadt of integreert in je Maven-gebaseerde applicaties door gewoon de volgende configuraties toe te voegen aan pom.xml.

Opslagplaats en afhankelijkheid

<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>

Extraheer EXIF-gegevens uit afbeeldingen in Java - Metadata Viewer

U kunt de EXIF-gegevenseigenschappen lezen door eenvoudige stappen te volgen. Laten we beginnen met het extraheren van EXIF-gegevens van deze foto van de Eiffeltoren. Ik heb een JPG-bestand als voorbeeldafbeelding geselecteerd, u kunt elk van uw bestanden gebruiken, of het nu een PNG, WebP, BMP, GIF of TIFF is.

Eiffeltoren Afbeelding voor EXIF-gegevens
  • Laad het afbeeldingsbronbestand met EXIF-gegevensinformatie met behulp van de klasseconstructor Metadata.
  • Haal het rootpakket op door de methode getRootPackage() aan te roepen.
  • Haal vanuit het rootpakket het EXIF-pakket op door de methode getExifPackage() aan te roepen.
  • Zodra u het EXIF-pakket hebt, kunt u EXIF-eigenschappen van afbeeldingen krijgen, zoals Make, Model, Width, Length, Date-Time, enz. Zoals weergegeven in het onderstaande Java-codevoorbeeld.
// 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());					
	} 
}

Hier is de EXIF-informatie die u krijgt als resultaat van de bovenstaande code.

Make : NIKON CORPORATION
Model : NIKON D3000
Width : 640
Length : 424
DateTime : 2014:08:09 10:35:13

Voor meer IFD- (Image File Directory) en GPS-pakketinformatie (Global Positioning System), hoeft u alleen maar de respectieve methoden van het EXIF-pakket aan te roepen, dwz getExifIfdPackage() of getGpsPackage(). Uit deze pakketten kunt u meer informatie halen, zoals;

  • Serienummer van het apparaat voor het vastleggen van afbeeldingen
  • Naam camera-eigenaar
  • Opmerkingen van gebruikers
  • Hoogte
  • Breedtegraad
  • Lengtegraad
  • enz.

Hier is de code die u kunt toevoegen aan uw bovenstaande methode om EXIF-gegevens samen met IFD- en GPS-informatie weer te geven.

// 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());

Lees alle EXIF-tags van afbeeldingen met Java

Als u alle EXIF-eigenschappen van een afbeelding of bestand wilt weergeven of extraheren, kunt u dit in stappen doen die vergelijkbaar zijn met de bovenstaande voorbeelden:

  • Laad het bestand gewoon met de constructor Metadata.
  • Download het EXIF-rootpakket door de methode getRootPackage() aan te roepen.
  • Haal het EXIF-pakket op door de methode getExifPackage() aan te roepen.
  • Herhaal het EXIF-pakket om de gewenste naam-waardeparen te krijgen.
  • Haal op dezelfde manier de IFD- en GPS-pakketten op en geef de sleutels en waarden weer.
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()));
		}
	}
}

Update EXIF-eigenschappen in Java

U kunt zelfs de bestaande EXIF-gegevens van elke afbeelding of elk document eenvoudig wijzigen. Stappen zijn eenvoudig:

Update EXIF-pakket

  • Haal het EXIF-pakket op door de methode getExifPackage() aan te roepen.
  • Gebruik de setter-methoden zoals;
  • Op dezelfde manier kunt u de waarden instellen voor Artiest, Merk, Model, Software, Afbeeldingsbreedte en -hoogte, Datum, Tijd, enz.

Update EXIF IFD-pakket

Net zoals het bijwerken van het EXIF-pakket, kunt u de eigenschappen van EXIF IFD- en GPS-pakketten bijwerken. Ga naar de klasse ExifIfdPackage of ExifGpsPackage om te zien hoeveel u kunt aanpassen voor uw waardevolle afbeeldingen en documenten.

// 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");
}

Verwijder EXIF-metadata van afbeeldingen in Java

Dit is heel eenvoudig als u het EXIF-pakket uit een willekeurig bestand wilt verwijderen. Stel het EXIF-pakket gewoon in op null door setExifPackage(null) van het rootpakket aan te roepen.

// 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");
}

Ondersteunde afbeeldingen en andere indelingen

Dit zijn de momenteel ondersteunde bestandsindelingen door GroupDocs.Metadata. U kunt altijd de documentatie bezoeken voor de bijgewerkte informatie.

Documenttype Bestandsformaten
Afbeeldingen BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF
Audio & Video MP3, WAV, AVI, MOV/QT, FLV, ASF, DICOM

Meer informatie over GroupDocs.Metadata

Laten we meer praten @ Gratis ondersteuningsforum.

Gerelateerd artikel