Merge pull request #1563 from mhmdfy/face-detect-fix

Face detect fix
This commit is contained in:
Richard Cordovano 2015-09-09 14:10:27 -04:00
commit e7a621c587

View File

@ -244,10 +244,6 @@ public final class ExifParserFileIngestModule implements FileIngestModule {
/**
* Checks if this metadata contains any tags related to facial information.
* NOTE: Cases with this metadata containing tags like enabled red-eye
* reduction settings, portrait settings, etc are also assumed to contain
* facial information. The method returns true. The return value of this
* method does NOT guarantee actual presence of face.
*
* @param metadata the metadata which needs to be parsed for possible facial
* information.
@ -268,18 +264,6 @@ public final class ExifParserFileIngestModule implements FileIngestModule {
}
}
d = metadata.getFirstDirectoryOfType(CasioType1MakernoteDirectory.class);
if (d != null) {
try {
if (d.containsTag(CasioType1MakernoteDirectory.TAG_FLASH_MODE)
&& d.getInt(CasioType1MakernoteDirectory.TAG_FLASH_MODE) == 0x04) { //0x04 = "Red eye reduction"
return true;
}
} catch (MetadataException ex) {
// move on and check next directory
}
}
d = metadata.getFirstDirectoryOfType(FujifilmMakernoteDirectory.class);
if (d != null) {
if (d.containsTag(FujifilmMakernoteDirectory.TAG_FACES_DETECTED)
@ -288,72 +272,19 @@ public final class ExifParserFileIngestModule implements FileIngestModule {
}
}
d = metadata.getFirstDirectoryOfType(KodakMakernoteDirectory.class);
if (d != null) {
try {
if (d.containsTag(KodakMakernoteDirectory.TAG_FLASH_MODE)
&& d.getInt(KodakMakernoteDirectory.TAG_FLASH_MODE) == 0x03) { //0x03 = "Red Eye"
return true;
}
} catch (MetadataException ex) {
/// move on and check next directory
}
}
d = metadata.getFirstDirectoryOfType(NikonType2MakernoteDirectory.class);
if (d != null) {
if (d.containsTag(NikonType2MakernoteDirectory.TAG_SCENE_MODE)
&& d.getString(NikonType2MakernoteDirectory.TAG_SCENE_MODE) != null
&& (d.getString(NikonType2MakernoteDirectory.TAG_SCENE_MODE).equals("BEST FACE") // NON-NLS
|| (d.getString(NikonType2MakernoteDirectory.TAG_SCENE_MODE).equals("SMILE")))) { // NON-NLS
return true;
}
}
d = metadata.getFirstDirectoryOfType(PanasonicMakernoteDirectory.class);
if (d != null) {
if (d.containsTag(PanasonicMakernoteDirectory.TAG_FACES_DETECTED)
&& d.getString(PanasonicMakernoteDirectory.TAG_FACES_DETECTED) != null) {
return true;
}
}
d = metadata.getFirstDirectoryOfType(PentaxMakernoteDirectory.class);
if (d != null) {
try {
if (d.containsTag(PentaxMakernoteDirectory.TAG_FLASH_MODE)
&& d.getInt(PentaxMakernoteDirectory.TAG_FLASH_MODE) == 6) { // 6 = Red-eye Reduction
return true;
}
} catch (MetadataException ex) {
// move on and check next directory
}
}
d = metadata.getFirstDirectoryOfType(SanyoMakernoteDirectory.class);
if (d != null) {
if (d.containsTag(SanyoMakernoteDirectory.TAG_MANUAL_FOCUS_DISTANCE_OR_FACE_INFO)
&& d.getString(SanyoMakernoteDirectory.TAG_MANUAL_FOCUS_DISTANCE_OR_FACE_INFO) != null) {
if(d.containsTag(PanasonicMakernoteDirectory.TAG_AF_AREA_MODE)
&& d.getString(PanasonicMakernoteDirectory.TAG_AF_AREA_MODE) != null
&& d.getString(PanasonicMakernoteDirectory.TAG_AF_AREA_MODE).equals("64 0")) { // NON-NLS
return true;
}
}
d = metadata.getFirstDirectoryOfType(SonyType1MakernoteDirectory.class);
if (d != null) {
try {
if (d.containsTag(SonyType1MakernoteDirectory.TAG_AF_MODE)
&& d.getInt(SonyType1MakernoteDirectory.TAG_AF_MODE) == 15) { //15 = "Face Detected"
return true;
}
if (d.containsTag(SonyType1MakernoteDirectory.TAG_EXPOSURE_MODE)
&& d.getInt(SonyType1MakernoteDirectory.TAG_EXPOSURE_MODE) == 14) { //14 = "Smile shutter"
return true;
}
} catch (MetadataException ex) {
// move on and check next directory
}
}
return false;
}