Merge "ExifInterface: fix creating pointer tags which indicate 0 offset" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e468a67d59
@@ -1888,6 +1888,19 @@ public class ExifInterface {
|
|||||||
for (ExifTag tag : IFD_POINTER_TAGS) {
|
for (ExifTag tag : IFD_POINTER_TAGS) {
|
||||||
setAttribute(tag.name, null);
|
setAttribute(tag.name, null);
|
||||||
}
|
}
|
||||||
|
// Remove old thumbnail data
|
||||||
|
setAttribute(JPEG_INTERCHANGE_FORMAT_TAG.name, null);
|
||||||
|
setAttribute(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name, null);
|
||||||
|
|
||||||
|
// Remove null value tags.
|
||||||
|
for (int hint = 0; hint < EXIF_TAGS.length; ++hint) {
|
||||||
|
for (Object obj : mAttributes[hint].entrySet().toArray()) {
|
||||||
|
Map.Entry entry = (Map.Entry) obj;
|
||||||
|
if (entry.getValue() == null) {
|
||||||
|
mAttributes[hint].remove(entry.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add IFD pointer tags. The next offset of primary image TIFF IFD will have thumbnail IFD
|
// Add IFD pointer tags. The next offset of primary image TIFF IFD will have thumbnail IFD
|
||||||
// offset when there is one or more tags in the thumbnail IFD.
|
// offset when there is one or more tags in the thumbnail IFD.
|
||||||
@@ -1900,25 +1913,12 @@ public class ExifInterface {
|
|||||||
if (!mAttributes[IFD_GPS_HINT].isEmpty()) {
|
if (!mAttributes[IFD_GPS_HINT].isEmpty()) {
|
||||||
mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[1].name, "0");
|
mAttributes[IFD_TIFF_HINT].put(IFD_POINTER_TAGS[1].name, "0");
|
||||||
}
|
}
|
||||||
// Remove old thumbnail data
|
|
||||||
setAttribute(JPEG_INTERCHANGE_FORMAT_TAG.name, null);
|
|
||||||
setAttribute(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name, null);
|
|
||||||
if (mHasThumbnail) {
|
if (mHasThumbnail) {
|
||||||
mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name, "0");
|
mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_TAG.name, "0");
|
||||||
mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name,
|
mAttributes[IFD_TIFF_HINT].put(JPEG_INTERCHANGE_FORMAT_LENGTH_TAG.name,
|
||||||
String.valueOf(mThumbnailLength));
|
String.valueOf(mThumbnailLength));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove null value tags.
|
|
||||||
for (int hint = 0; hint < EXIF_TAGS.length; ++hint) {
|
|
||||||
for (Object obj : mAttributes[hint].entrySet().toArray()) {
|
|
||||||
Map.Entry entry = (Map.Entry) obj;
|
|
||||||
if (entry.getValue() == null) {
|
|
||||||
mAttributes[hint].remove(entry.getKey());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate IFD group data area sizes. IFD group data area is assigned to save the entry
|
// Calculate IFD group data area sizes. IFD group data area is assigned to save the entry
|
||||||
// value which has a bigger size than 4 bytes.
|
// value which has a bigger size than 4 bytes.
|
||||||
for (int i = 0; i < 5; ++i) {
|
for (int i = 0; i < 5; ++i) {
|
||||||
|
|||||||
Reference in New Issue
Block a user