summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jin Park <jinpark@google.com> 2016-08-09 11:54:08 +0900
committer Jin Park <jinpark@google.com> 2016-08-09 13:18:22 +0900
commite6e4e8d7a5f8055f6a11b24866feebbab57c9b4e (patch)
treeb3767286f86d6e326533d961efd259a532c746e5
parent043785660ca6450c96408377fe563f627d036353 (diff)
ExifInterface: Fix function for image size update
Existing code assumes that the primary image data is correctly placed. Since this may be a mistaken assumption, this CL checks the NewSubfilType value and updates the image size values only if the tag value equals the original resolution image. Bug: 29409358 Change-Id: I51cffba870ee29d76118b4c8b72290d1010c6462
-rw-r--r--media/java/android/media/ExifInterface.java31
1 files changed, 19 insertions, 12 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index b675afe70199..ff4cfc06167f 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -3240,20 +3240,27 @@ public class ExifInterface {
}
} else {
// Update for JPEG image
- if (imageType == IFD_TIFF_HINT) {
- ExifAttribute pixelXDimAttribute =
- (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_X_DIMENSION);
- ExifAttribute pixelYDimAttribute =
- (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_Y_DIMENSION);
- if (pixelXDimAttribute != null && pixelYDimAttribute != null) {
- mAttributes[imageType].put(TAG_IMAGE_WIDTH, pixelXDimAttribute);
- mAttributes[imageType].put(TAG_IMAGE_LENGTH, pixelYDimAttribute);
- } else {
- retrieveJpegImageSize(in, imageType);
+ ExifAttribute newSubfileTypeAttribute =
+ (ExifAttribute) mAttributes[imageType].get(TAG_NEW_SUBFILE_TYPE);
+
+ if (newSubfileTypeAttribute != null) {
+ int newSubfileTypeValue = newSubfileTypeAttribute.getIntValue(mExifByteOrder);
+
+ if (newSubfileTypeValue == ORIGINAL_RESOLUTION_IMAGE) {
+ // Update only for the primary image (OriginalResolutionImage)
+ ExifAttribute pixelXDimAttribute =
+ (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_X_DIMENSION);
+ ExifAttribute pixelYDimAttribute =
+ (ExifAttribute) mAttributes[IFD_EXIF_HINT].get(TAG_PIXEL_Y_DIMENSION);
+
+ if (pixelXDimAttribute != null && pixelYDimAttribute != null) {
+ mAttributes[imageType].put(TAG_IMAGE_WIDTH, pixelXDimAttribute);
+ mAttributes[imageType].put(TAG_IMAGE_LENGTH, pixelYDimAttribute);
+ return;
+ }
}
- } else {
- retrieveJpegImageSize(in, imageType);
}
+ retrieveJpegImageSize(in, imageType);
}
}