diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2013-04-05 16:22:55 -0700 |
---|---|---|
committer | Ruben Brunk <rubenbrunk@google.com> | 2013-04-05 16:34:18 -0700 |
commit | c59be38287ed3d58f6945d63713b03ac20510c22 (patch) | |
tree | cfe67f2eef5de5a9902d901f9d00fa4f62963b4b /gallerycommon | |
parent | f9ee06b28b9e8992c25ac8ce48ac76a2990a44ec (diff) | |
download | android_packages_apps_Gallery2-c59be38287ed3d58f6945d63713b03ac20510c22.tar.gz android_packages_apps_Gallery2-c59be38287ed3d58f6945d63713b03ac20510c22.tar.bz2 android_packages_apps_Gallery2-c59be38287ed3d58f6945d63713b03ac20510c22.zip |
Added check to strip out uninitialized EXIF tags.
Bug: 8552339
Change-Id: Ib6ae4f59f9e393e5f6b46877a4b2c3b2fe1852d3
Diffstat (limited to 'gallerycommon')
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java index ae501a50f..7ca05f2e0 100644 --- a/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java +++ b/gallerycommon/src/com/android/gallery3d/exif/ExifOutputStream.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.util.ArrayList; /** * This class provides a way to replace the Exif header of a JPEG image. @@ -212,6 +213,7 @@ class ExifOutputStream extends FilterOutputStream { if (DEBUG) { Log.v(TAG, "Writing exif data..."); } + ArrayList<ExifTag> nullTags = stripNullValueTags(mExifData); createRequiredIfdAndTag(); int exifSize = calculateAllOffset(); if (exifSize + 8 > MAX_EXIF_SIZE) { @@ -233,6 +235,20 @@ class ExifOutputStream extends FilterOutputStream { dataOutputStream.writeInt(8); writeAllTags(dataOutputStream); writeThumbnail(dataOutputStream); + for (ExifTag t : nullTags) { + mExifData.addTag(t); + } + } + + private ArrayList<ExifTag> stripNullValueTags(ExifData data) { + ArrayList<ExifTag> nullTags = new ArrayList<ExifTag>(); + for(ExifTag t : data.getAllTags()) { + if (t.getValue() == null && !ExifInterface.isOffsetTag(t.getTagId())) { + data.removeTag(t.getTagId(), t.getIfd()); + nullTags.add(t); + } + } + return nullTags; } private void writeThumbnail(OrderedDataOutputStream dataOutputStream) throws IOException { |