From d16187301386ce1234a57fa6da9f805624227570 Mon Sep 17 00:00:00 2001 From: Ruben Brunk Date: Fri, 5 Apr 2013 16:22:55 -0700 Subject: Added check to strip out uninitialized EXIF tags. Bug: 8552339 Change-Id: Ib6ae4f59f9e393e5f6b46877a4b2c3b2fe1852d3 --- .../src/com/android/gallery3d/exif/ExifOutputStream.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'gallerycommon/src') 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 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 stripNullValueTags(ExifData data) { + ArrayList nullTags = new ArrayList(); + 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 { -- cgit v1.2.3