diff options
author | Hung-ying Tyan <tyanh@google.com> | 2012-09-04 09:56:00 +0800 |
---|---|---|
committer | Hung-ying Tyan <tyanh@google.com> | 2012-09-04 10:05:10 +0800 |
commit | 25d33864d28f6acf25d2e835a85bf04a9a22f57e (patch) | |
tree | 7136ecfc407c48b3fce1afed90547a9b0304f0d1 /src | |
parent | dc433a066188e52593aaf7f0fae96191f44a5e26 (diff) | |
download | android_packages_apps_Snap-25d33864d28f6acf25d2e835a85bf04a9a22f57e.tar.gz android_packages_apps_Snap-25d33864d28f6acf25d2e835a85bf04a9a22f57e.tar.bz2 android_packages_apps_Snap-25d33864d28f6acf25d2e835a85bf04a9a22f57e.zip |
Fix NPE in CropImage.changeExifImageSizeTag().
Bug: 7099850
Change-Id: Ib7b3b7d9fddaf53853bcc98b9588dfadda0aee6f
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/gallery3d/app/CropImage.java | 22 |
1 files changed, 17 insertions, 5 deletions
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); |