mirror of
https://github.com/status-im/react-native-camera.git
synced 2026-08-31 13:41:08 +00:00
Add the missing exif data for Android
Some of the exif data has been previously been lost. Now they are included as the sub directory is looped and names of exif data are formated to match with ExifInterface class requirements.
This commit is contained in:
@@ -15,6 +15,7 @@ import com.drew.metadata.Metadata;
|
||||
import com.drew.metadata.MetadataException;
|
||||
import com.drew.metadata.Tag;
|
||||
import com.drew.metadata.exif.ExifIFD0Directory;
|
||||
import com.drew.metadata.exif.ExifSubIFDDirectory;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
@@ -179,7 +180,6 @@ public class MutableImage {
|
||||
ExifInterface exif = new ExifInterface(file.getAbsolutePath());
|
||||
|
||||
// copy original exif data to the output exif...
|
||||
// unfortunately, this Android ExifInterface class doesn't understand all the tags so we lose some
|
||||
for (Directory directory : originalImageMetaData().getDirectories()) {
|
||||
for (Tag tag : directory.getTags()) {
|
||||
int tagType = tag.getTagType();
|
||||
@@ -188,6 +188,18 @@ public class MutableImage {
|
||||
}
|
||||
}
|
||||
|
||||
// Add missing exif data from a sub directory
|
||||
ExifSubIFDDirectory directory = originalImageMetaData()
|
||||
.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
|
||||
for (Tag tag : directory.getTags()) {
|
||||
int tagType = tag.getTagType();
|
||||
// As some of exif data does not follow naming of the ExifInterface the names need
|
||||
// to be transformed into Upper camel case format.
|
||||
String tagName = tag.getTagName().replaceAll(" ", "");
|
||||
Object object = directory.getObject(tagType);
|
||||
exif.setAttribute(tagName, object.toString());
|
||||
}
|
||||
|
||||
writeLocationExifData(options, exif);
|
||||
|
||||
if(hasBeenReoriented)
|
||||
|
||||
Reference in New Issue
Block a user