ExifInterface: keep the original metadata data instead of strings
This CL makes ExifInterface store the tag values as the original forms and the format validiation is added that compares the given value and the data format specificed in EXIF specification in order to keep the valid tag values only. Bug: 27583378, Bug: 27614052, Bug: 28075709 Change-Id: If60bbddefe74c4b87b4ce64b5fc79e467e36a5b9
This commit is contained in:
@ -20260,9 +20260,9 @@ package android.media {
|
||||
field public static final java.lang.String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
|
||||
field public static final java.lang.String TAG_SUBJECT_LOCATION = "SubjectLocation";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME = "SubSecTime";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
|
||||
|
@ -21741,9 +21741,9 @@ package android.media {
|
||||
field public static final java.lang.String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
|
||||
field public static final java.lang.String TAG_SUBJECT_LOCATION = "SubjectLocation";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME = "SubSecTime";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
|
||||
|
@ -20328,9 +20328,9 @@ package android.media {
|
||||
field public static final java.lang.String TAG_SUBJECT_DISTANCE_RANGE = "SubjectDistanceRange";
|
||||
field public static final java.lang.String TAG_SUBJECT_LOCATION = "SubjectLocation";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME = "SubSecTime";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_DIG = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_DIGITIZED = "SubSecTimeDigitized";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final deprecated java.lang.String TAG_SUBSEC_TIME_ORIG = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_SUBSEC_TIME_ORIGINAL = "SubSecTimeOriginal";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_LENGTH = "ThumbnailImageLength";
|
||||
field public static final java.lang.String TAG_THUMBNAIL_IMAGE_WIDTH = "ThumbnailImageWidth";
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -138,11 +138,11 @@ static jobject getRawAttributes(JNIEnv* env, SkStream* stream, bool returnThumbn
|
||||
|
||||
if (image_data.thumbnail.length > 0
|
||||
&& image_data.thumbnail.format == ::piex::Image::kJpegCompressed) {
|
||||
map.add(String8("hasThumbnail"), String8("true"));
|
||||
map.add(String8("thumbnailOffset"), String8::format("%d", image_data.thumbnail.offset));
|
||||
map.add(String8("thumbnailLength"), String8::format("%d", image_data.thumbnail.length));
|
||||
map.add(String8("HasThumbnail"), String8("true"));
|
||||
map.add(String8("ThumbnailOffset"), String8::format("%d", image_data.thumbnail.offset));
|
||||
map.add(String8("ThumbnailLength"), String8::format("%d", image_data.thumbnail.length));
|
||||
} else {
|
||||
map.add(String8("hasThumbnail"), String8("false"));
|
||||
map.add(String8("HasThumbnail"), String8("false"));
|
||||
}
|
||||
|
||||
map.add(
|
||||
@ -307,7 +307,7 @@ static jobject getRawAttributes(JNIEnv* env, SkStream* stream, bool returnThumbn
|
||||
(uint8_t*)thumbnailData.get());
|
||||
env->SetByteArrayRegion(
|
||||
jthumbnailByteArray, 0, image_data.thumbnail.length, thumbnailData.get());
|
||||
jstring jkey = env->NewStringUTF(String8("thumbnailData"));
|
||||
jstring jkey = env->NewStringUTF(String8("ThumbnailData"));
|
||||
env->CallObjectMethod(hashMap, gFields.hashMap.put, jkey, jthumbnailByteArray);
|
||||
env->DeleteLocalRef(jkey);
|
||||
env->DeleteLocalRef(jthumbnailByteArray);
|
||||
|
@ -97,7 +97,7 @@ public class ExifInterfaceTest extends AndroidTestCase {
|
||||
// Values.
|
||||
public final String make;
|
||||
public final String model;
|
||||
public final float aperture;
|
||||
public final float fNumber;
|
||||
public final String datetime;
|
||||
public final float exposureTime;
|
||||
public final float flash;
|
||||
@ -140,7 +140,7 @@ public class ExifInterfaceTest extends AndroidTestCase {
|
||||
// Reads values.
|
||||
make = getString(typedArray, 7);
|
||||
model = getString(typedArray, 8);
|
||||
aperture = typedArray.getFloat(9, 0f);
|
||||
fNumber = typedArray.getFloat(9, 0f);
|
||||
datetime = getString(typedArray, 10);
|
||||
exposureTime = typedArray.getFloat(11, 0f);
|
||||
flash = typedArray.getFloat(12, 0f);
|
||||
@ -243,7 +243,7 @@ public class ExifInterfaceTest extends AndroidTestCase {
|
||||
assertEquals(expectedValue, intValue);
|
||||
}
|
||||
|
||||
private void assertFloatTag(ExifInterface exifInterface, String tag, float expectedValue) {
|
||||
private void assertDoubleTag(ExifInterface exifInterface, String tag, float expectedValue) {
|
||||
double doubleValue = exifInterface.getAttributeDouble(tag, 0.0);
|
||||
assertEquals(expectedValue, doubleValue, DIFFERENCE_TOLERANCE);
|
||||
}
|
||||
@ -288,10 +288,10 @@ public class ExifInterfaceTest extends AndroidTestCase {
|
||||
// Checks values.
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_MAKE, expectedValue.make);
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_MODEL, expectedValue.model);
|
||||
assertFloatTag(exifInterface, ExifInterface.TAG_F_NUMBER, expectedValue.aperture);
|
||||
assertDoubleTag(exifInterface, ExifInterface.TAG_F_NUMBER, expectedValue.fNumber);
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_DATETIME, expectedValue.datetime);
|
||||
assertFloatTag(exifInterface, ExifInterface.TAG_EXPOSURE_TIME, expectedValue.exposureTime);
|
||||
assertFloatTag(exifInterface, ExifInterface.TAG_FLASH, expectedValue.flash);
|
||||
assertDoubleTag(exifInterface, ExifInterface.TAG_EXPOSURE_TIME, expectedValue.exposureTime);
|
||||
assertDoubleTag(exifInterface, ExifInterface.TAG_FLASH, expectedValue.flash);
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_FOCAL_LENGTH, expectedValue.focalLength);
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_GPS_ALTITUDE, expectedValue.gpsAltitude);
|
||||
assertStringTag(exifInterface, ExifInterface.TAG_GPS_ALTITUDE_REF,
|
||||
|
Reference in New Issue
Block a user