From 25d33864d28f6acf25d2e835a85bf04a9a22f57e Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Tue, 4 Sep 2012 09:56:00 +0800 Subject: Fix NPE in CropImage.changeExifImageSizeTag(). Bug: 7099850 Change-Id: Ib7b3b7d9fddaf53853bcc98b9588dfadda0aee6f --- src/com/android/gallery3d/app/CropImage.java | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/com/android/gallery3d/app/CropImage.java b/src/com/android/gallery3d/app/CropImage.java index 21ce98388..f9254eefe 100644 --- a/src/com/android/gallery3d/app/CropImage.java +++ b/src/com/android/gallery3d/app/CropImage.java @@ -392,10 +392,17 @@ public class CropImage extends AbstractGalleryActivity { } } - private void changeExifImageSizeTag(ExifData data, int width, int height) { - data.getIfdData(IfdId.TYPE_IFD_0).getTag(ExifTag.TIFF_TAG.TAG_IMAGE_WIDTH).setValue(width); - data.getIfdData(IfdId.TYPE_IFD_0).getTag(ExifTag.TIFF_TAG.TAG_IMAGE_HEIGHT).setValue( - height); + private void changeExifImageSizeTags(ExifData data, int width, int height) { + // FIXME: would the image size be too large for TYPE_UNSIGHED_SHORT? + ExifTag tag = new ExifTag(ExifTag.TIFF_TAG.TAG_IMAGE_WIDTH, + ExifTag.TYPE_UNSIGNED_SHORT, 1, IfdId.TYPE_IFD_0); + tag.setValue(new int[] {width}); + data.getIfdData(IfdId.TYPE_IFD_0).setTag(tag); + + tag = new ExifTag(ExifTag.TIFF_TAG.TAG_IMAGE_HEIGHT, + ExifTag.TYPE_UNSIGNED_SHORT, 1, IfdId.TYPE_IFD_0); + tag.setValue(new int[] {height}); + data.getIfdData(IfdId.TYPE_IFD_0).setTag(tag); } private Uri saveToMediaProvider(JobContext jc, Bitmap cropped) { @@ -426,6 +433,9 @@ public class CropImage extends AbstractGalleryActivity { if (pos >= 0) filename = filename.substring(0, pos); ExifData exifData = new ExifData(ByteOrder.BIG_ENDIAN); PicasaSource.extractExifValues(mMediaItem, exifData); + changeExifImageSizeTags(exifData, cropped.getWidth(), cropped.getHeight()); + // TODO: modify the Software tag to indicate which the image is revised by + // TODO: modify the DateTime tag File output = saveMedia(jc, cropped, DOWNLOAD_BUCKET, filename, exifData); if (output == null) return null; @@ -467,7 +477,9 @@ public class CropImage extends AbstractGalleryActivity { if (convertExtensionToCompressFormat(getFileExtension()) == CompressFormat.JPEG) { exifData = getExifData(oldPath.getAbsolutePath()); if (exifData != null) { - changeExifImageSizeTag(exifData, cropped.getWidth(), cropped.getHeight()); + // TODO: modify the Software tag to indicate which the image is revised by + // TODO: modify the DateTime tag + changeExifImageSizeTags(exifData, cropped.getWidth(), cropped.getHeight()); } } output = saveMedia(jc, cropped, directory, filename, exifData); -- cgit v1.2.3