EXIF (פורמט קבצי תמונה ניתן להחלפה) הוא התקן לציון פורמטי התמונה והקול המשמשים בעיקר מצלמות וסורקים דיגיטליים. נתוני EXIF כוללים את התיוג ומטא נתונים על קובץ התמונה שנלכד. מטא נתונים עשויים להכיל מידע כמו יצרן מצלמה, דגם, מהירות תריס, תאריך ושעה, צמצם, זמן חשיפה, רזולוציית X, רזולוציית Y. וכו '

אם ברצונך לנהל, לחלץ, לעדכן או להסיר נתוני EXIF מהתמונות שלך באופן תוכנתי, המאמר הזה הוא בשבילך. מאמר זה יכסה את הדרכים הבאות לתמרן עם נתוני EXIF ב-Java:

ספריית Java Metadata Manipulation

Metadata Java API מאת GroupDocs

GroupDocs.Metadata for Java הוא Java API לניהול מטא נתונים קל לשימוש. יש לו את היכולת לא רק לחלץ מטא נתונים מתמונות כמו JPG, PNG או WebP, אלא גם להוסיף, לערוך, לעדכן ולהסיר מטא נתונים מהתמונות וממסמכים אחרים עם אפשרויות שונות.

אני משתמש ב-API זה במאמר זה, אז אנא הקפד להוריד או לשלב אותו ביישומים המבוססים על Maven על ידי הוספת התצורות הבאות לקובץ pom.xml.

מאגר ותלות

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

חלץ נתוני EXIF מתמונות ב-Java - מציג מטא נתונים

אתה יכול לקרוא את מאפייני הנתונים של EXIF על ידי ביצוע שלבים פשוטים. נתחיל עם חילוץ של נתוני EXIF מהתמונה הזו של מגדל אייפל. בחרתי קובץ JPG כתמונה לדוגמה, אתה יכול להשתמש בכל אחד מהקבצים שלך בין אם זה PNG, WebP, BMP, GIF או TIFF.

תמונה של מגדל אייפל עבור EXIF Data
  • טען את קובץ מקור התמונה המכיל מידע על נתוני EXIF באמצעות הבנאי המחלקה Metadata.
  • קבל את חבילת השורש שלו על ידי קריאה לשיטת getRootPackage().
  • מחבילת השורש, קבל את חבילת ה-EXIF שלה על ידי קריאה לשיטת getExifPackage().
  • ברגע שיש לך את חבילת EXIF, אתה יכול לקבל מאפייני EXIF של תמונה כמו מותג, דגם, רוחב, אורך, תאריך-שעה וכו’ כפי שמוצג בדוגמה של קוד 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());					
	} 
}

הנה מידע ה-EXIF שתקבל כתוצאה מהקוד לעיל.

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

למידע נוסף על חבילות IFD (Image File Directory) ו-GPS (Global Positioning System), אתה רק צריך לקרוא לשיטות המתאימות של חבילת EXIF, כלומר getExifIfdPackage() או getGpsPackage(). מחבילות אלה, תוכל לחלץ מידע נוסף כמו;

  • מספר סידורי של מכשיר לכידת תמונה
  • שם בעל המצלמה
  • הערות משתמש
  • גוֹבַה
  • קו רוחב
  • קו אורך
  • וכו '

הנה הקוד שתוכל להוסיף בשיטה שלמעלה כדי להציג נתוני EXIF יחד עם מידע IFD ו-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());

קרא את כל תגי ה-EXIF של תמונות באמצעות Java

אם ברצונך להציג או לחלץ את כל מאפייני ה-EXIF של כל תמונה או קובץ, תוכל לעשות זאת בשלבים הדומים לדוגמאות לעיל:

  • פשוט טען את הקובץ עם הבנאי Metadata.
  • קבל את חבילת השורש של EXIF על ידי קריאה למתודה getRootPackage().
  • קבל את חבילת EXIF על ידי קריאה לשיטת getExifPackage().
  • חזור על חבילת EXIF כדי לקבל את צמדי השם והערך הרצויים.
  • באופן דומה, קבל את חבילות ה-IFD וה-GPS והצגת המפתחות והערכים שלה.
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()));
		}
	}
}

עדכן את מאפייני EXIF ב-Java

אתה יכול אפילו לשנות את נתוני ה-EXIF הקיימים של כל תמונה או כל מסמך בקלות. השלבים פשוטים:

עדכן את חבילת EXIF

  • קבל את חבילת EXIF על ידי קריאה לשיטת getExifPackage().
  • השתמש בשיטות המגדיר כמו;
  • באופן דומה, אתה יכול להגדיר את הערכים עבור אמן, מותג, דגם, תוכנה, רוחב וגובה תמונה, תאריך, שעה וכו'.

עדכן את חבילת EXIF IFD

בדיוק כמו עדכון חבילת EXIF, אתה יכול לעדכן את המאפיינים של חבילות EXIF IFD ו-GPS. אנא בקר בכיתה ExifIfdPackage או ExifGpsPackage כדי לדעת כמה אתה יכול להתאים אישית עבור התמונות והמסמכים החשובים שלך.

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

הסר EXIF Metadata מתמונות ב-Java

זה מאוד פשוט אם אתה רוצה להסיר את חבילת EXIF מכל קובץ, פשוט הגדר את חבילת ה-EXIF שלו ל-null על ידי קריאה לsetExifPackage(null) של חבילת השורש.

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

תמונות נתמכות ופורמטים אחרים

להלן פורמטי הקבצים הנתמכים כעת על ידי GroupDocs.Metadata. אתה תמיד יכול לבקר בתיעוד לקבלת המידע המעודכן.

| סוג מסמך | פורמטי קבצים |

| — | —- |

| תמונות | BMP, GIF, JPG, JPEG, JPE, JP2, PNG, DJVU, DWG, DXF, WebP, TIFF, PSD, EMF, WMF |

| אודיו ווידאו | MP3, WAV, AVI, MOV / QT, FLV, ASF, DICOM |

ראה עוד על GroupDocs.Metadata

בואו נדבר יותר @ פורום תמיכה בחינם.

מאמר קשור