Commit Graph

60 Commits

Author SHA1 Message Date
Sungsoo
2dbe166801 ExifInterface: Provide backward compatibility
ExifInterface.saveAttribute() didn't throw UnsupportedOperationException
before. Use IOException instead of UnsupportedOperationException for
backward compatibility.

Bug: 30936376, Bug: 32068647, Bug: 31319086
Change-Id: Ifb478db3af820eb846c5373d3a284367da3495a0
2016-10-13 13:06:24 +09:00
Sungsoo
d0a8a69034 ExifInterface: Update javadoc for saveAttributes
am: abf5b4cbf3

Change-Id: Icdd289f513f2a576b50d0f3ddf278a1c1710d8b5
2016-09-28 00:08:52 +00:00
Sungsoo
abf5b4cbf3 ExifInterface: Update javadoc for saveAttributes
Bug: 31319086
Test: Checked the created javadoc with "make docs"
Change-Id: I97c77ba4f00a95bc5eedf1dcee942aebd2d89ccb
2016-09-27 02:04:35 +00:00
Sungsoo
56ea7b4901 DO NOT MERGE) ExifInterface: Make saveAttributes throw an exception before change
ExifInterface object can be created with a unsupported file format.
If saveAttribute is called with an unsupported file format, ExifInterface
makes the file corrupted. This CL prevents those cases by throwing
an exception before making any change on the file.

Bug: 30936376
Change-Id: I115a42601c774062485974042464abb0d65c35e9
(cherry picked from commit a8f9a075b1)
2016-09-08 08:01:13 +00:00
Jaesung Chung
0e7d22535d ExifInterface: keep the original metadata data instead of strings
This CL makes ExifInterface store the tag values as the original forms
and the format validiation is added that compares the given value and
the data format specificed in EXIF specification in order to keep the
valid tag values only.

Bug: 27583378, Bug: 27614052, Bug: 28075709
Change-Id: If60bbddefe74c4b87b4ce64b5fc79e467e36a5b9
2016-04-15 23:27:21 +00:00
Jaesung Chung
c048c5f74a ExifInterface: inform the developers to close their FD/streams
After use of constructors for FD/Streams, developers should close their
FD/streams.

Bug: 27948392
Change-Id: I6c26213d6804791e6d72d5830566f63e5ed57284
2016-04-08 22:34:47 +09:00
Insun Kang
8884af3ee9 ExifInterface: Code clean up
Replaces deprecated constants with newly added constants in the actual
implementation.

Bug: 27932489
Change-Id: Id54236a05127cd7ce3bf0668c002635fb86489a9
2016-04-01 11:53:14 +09:00
Jaesung Chung
d37577d109 Merge "ExifInterface: deprecate duplicated tags" into nyc-dev 2016-03-31 23:04:43 +00:00
Tomasz Mikolajewski
e1d0cabb5f Merge "Unhide ExifThumbnail.getThumbnailRange() and make it match the comment." into nyc-dev 2016-03-31 03:47:41 +00:00
Jaesung Chung
0ae6bdfe37 ExifInterface: deprecate duplicated tags
Bug: 27932489
Change-Id: I423a4eab875aec80cf0a2e4c2911e8b5c88fd0d7
2016-03-31 11:20:38 +09:00
Tomasz Mikolajewski
2b57efb262 Unhide ExifThumbnail.getThumbnailRange() and make it match the comment.
Bug: 27579803
Change-Id: If9fe16976cfbc0760a6afb3043d35e0ee387945c
2016-03-31 10:36:26 +09:00
Jaesung Chung
4118ca8627 ExifInterface: keep tags in the original tag groups
Previously ExifInterface saved its tags in the all possible IFD tags via
setAttribute() method even it already knew the right IFD group for those
tags. In this CL, it introduces updateAttribute() and removeAttribute()
methods in order to maintain the internal IFD tags and its values
according to its original EXIF saving states in the given JPEG file.

Bug: 27583378
Change-Id: Ie49163c8c9bdd38b575ccd76938879ccddcd547b
2016-03-30 13:43:34 +09:00
Jaesung Chung
e468a67d59 Merge "ExifInterface: fix creating pointer tags which indicate 0 offset" into nyc-dev 2016-03-24 01:43:07 +00:00
Jaesung Chung
616a42f982 ExifInterface: fix creating pointer tags which indicate 0 offset
When saving attributes(that it writes JPEG again.), now ExifInterface
generates some uncessary pointer tags which refer to an empty EXIF IFD
group, that makes a warning message by ExifInterface when reading again,
which warns that the value of the pointer tag pointing to is invalid.

Bug: 27583378
Change-Id: Id0170c5644541565c98fe4978284098e6664c395
2016-03-23 10:22:48 -07:00
Jaesung Chung
976bbaccc4 Merge "ExifInterface: close the resource after reading EXIF data explicitly" into nyc-dev 2016-03-23 02:30:42 +00:00
Jaesung Chung
c247791db2 ExifInterface: close the resource after reading EXIF data explicitly
- In case of giving an argument of the image file name or descriptor,
 we created a InputStream at the inside of ExifInterface, close them
 properly.
- Developers should take care of closing input streams when they use
 input streams since they made those input streams.

Bug: 27636804
Change-Id: I9a3a75b1b55dcb2718a60e14814a04cad939d22c
2016-03-22 19:20:29 -07:00
Jaesung Chung
42ac0d0015 ExifInterface: fix regression of re-writing JPEG
Bug: 27583378
Change-Id: I052dfedbb1393705eba378de5eaf3636ed0e65ea
2016-03-22 19:12:42 -07:00
Jaesung Chung
285bbbbda4 Merge "ExifInterface: fix logs" into nyc-dev 2016-03-22 05:39:27 +00:00
Jaesung Chung
f2a1076cd3 Merge "ExifInterface: fix writing STRING and SRATIONAL formats" into nyc-dev 2016-03-22 05:38:27 +00:00
Jaesung Chung
c2916968aa ExifInterface: fix logs
- Give more explanations on dealing with files failed to process.
- Log and return immediately when handling lost JPEG files.
- Minor fixes in logging.

Bug: 27583378, Bug: 27587980
Change-Id: Id9a3d137e5f173fa0e6313402e5dc482a5efd57c
2016-03-21 22:13:46 -07:00
Jaesung Chung
f9e0f20b28 Merge "ExifInterface: do not throw an Exception when XMP" into nyc-dev 2016-03-18 07:17:45 +00:00
Jaesung Chung
d1e20d2c7a ExifInterface: fix writing STRING and SRATIONAL formats
This CL makes ExifInterface determine the data format of rational
numbers and the values which include several components for exif entry
correctly.

Bug: 27614052
Change-Id: Ic3ea64889fad06ef5f636e4635ab7803a9c9ae29
2016-03-18 15:17:04 +09:00
Jaesung Chung
36a20cdde3 Merge "ExifInterface: ignore exceptions when getting wrong images" into nyc-dev 2016-03-15 23:27:13 +00:00
Jaesung Chung
5fa031182b ExifInterface: do not throw an Exception when XMP
In JPEG, an APP1 section can contain EXIF or XMP. The old code throws an
Exception when XMP APP1 segment is showns.

Bug: 27580432
Change-Id: If42197ea0c33ec4446302c969b42afd3d4b4e3c3
2016-03-15 18:13:52 +09:00
Jaesung Chung
49371caff0 ExifInterface: handle the invalid offsets and count numbers
Some JPEG images generated by various camera vendors have wrong offsets
and invalid numbers for indicating the size of components. Instead of
throwing exceptions, this CL makes Exifinterface ignore these cases to
read the information without losing contents already parsed.

Bug: 27583378
Change-Id: Ie8ee0bf49283ef519f4f31c5b8ba78ce3f82fe92
2016-03-15 17:26:42 +09:00
Jaesung Chung
1043f56185 ExifInterface: ignore exceptions when getting wrong images
In order to maintain compatibility with the old versions of
ExifInterface, non-JPEG image files, for instance, PNG, GIF and so on,
need to be handled by generating an empty result rather than throwing
an exception in the constructor. And corrupted JPG files also should be
handled in the same way.

Bug: 27587980
Change-Id: If33b63c683bfb672999d1abd370a8edf29932ac1
2016-03-14 15:16:47 +09:00
Jaesung Chung
89cb194542 Merge "ExifInterface: implement the serialzation for Exif IFD structures" into nyc-dev 2016-03-10 08:35:24 +00:00
Jaesung Chung
86e552b9fa ExifInterface: implement the serialzation for Exif IFD structures
One image can have multiple image file directories, which stores the
attributes of the image, in Exif specification to save metadata.
In the old version, the all attributes from several image file
directories were combined in a one hash map eventually and were served
without distinction of the original IFD group.

In order to keep the original data as much as possible, it loads/saves
the attributes based on the original IFD group internally.

Bug: 26044456, Bug: 11224701
Change-Id: I416e4e79fd47461c9aa83ce13591ed1a5d42f26e
2016-03-10 15:51:41 +09:00
Jaesung Chung
ad76dc2e62 ExifInterface: fix a bug in readExifEntryValue
The readExifEntry method has raised an unnessary EOFException on reading
an non-ASCII byte array.

Bug: 27484747
Change-Id: I19371e0eed25770929f50b3ca25f249c50113925
2016-03-09 23:21:32 +09:00
Jaesung Chung
6e08d2b082 ExifInterface: add RAW input stream support
And also the following things are included:

- Remove mInputStream.
- Update javadoc accordingly.

Bug: 11224701
Change-Id: I30b4c29ac800ae396fca8f6b2c2c0f68028a44b3
2016-03-09 17:22:11 +09:00
Jaesung Chung
15ef59e081 Revert "Revert "ExifInterface: switch from using jhead to java implementation""
This reverts commit 3c233ee291.

Bug: 27349581
Change-Id: Ib9f687e79ec36692fa7505ba3852099eb3e44573
2016-02-25 14:13:10 +00:00
Sungsoo Lim
3c233ee291 Revert "ExifInterface: switch from using jhead to java implementation"
This reverts commit bf24c9fcb3.

Change-Id: Id278e831a9c03f615208fd6eab51c65f7bb019eb
2016-02-25 11:48:10 +00:00
Jaesung Chung
bf24c9fcb3 ExifInterface: switch from using jhead to java implementation
Bug: 26044456, Bug: 11224701
Change-Id: I881ef0ead24bcec76c0fa5a7dd0b74cc71c77285
2016-02-25 10:57:27 +09:00
Jaesung Chung
fe968dfc12 ExifInterface: add support for reading metadata from RAW images
This CL depends on piex (github.com/google/piex),
which is owned by Google Photos's RAW team.

piex is capable of reading EXIF data that contains
metadata, and finding the positions in an image of
thumbnail and preview images from RAW images.

piex supports DNG, CR2, NEF, NRW, ARW, RW2, ORF
and RAF image file formats.

ExifInterface gets thumbnail and metadata information
from the above RAW image formats via piex.

Bug: 26177215
Change-Id: I529f8032bcb2a9d3d9e857ff1365a26a4f040066
2016-01-18 22:14:57 +09:00
Michal Piechowski
43b0a458ab Don't use timestamps with all zero
Although all zero (0000:00:00) is valid time, in most cases it means
that value is not present. According to http://www.exiv2.org/Exif2-2.PDF
in such case those values should be omitted, however
some cameras set them to 0 anyway. With this commit such timestamps
will be treated as they were empty.

Change-Id: I9c762b1fa04ea6bf9c0fba9e2459a20430c71c90
2015-11-13 10:05:06 +09:00
Eino-Ville Talvala
ab60e7e6e0 ExifInterface: Add a few tag fields.
Since these are being CTS tested, they should be public.

Bug: 21568414
Change-Id: I3f9f6e5da240b2ac0b2b88b5d25ec3c8c4704b8d
2015-06-08 15:28:09 -07:00
Marco Nelissen
b2c890044e Update ExifInterface.getDateTime to support subseconds
Also document that it returns local time.

Bug: 20638367
Change-Id: I6a1c35925e0555bcdcb079be0ca5b19a279a05a6
2015-05-29 14:49:03 -07:00
Zhijun He
934349e8ad ExifInterface: fix class load failure
libexif_jni was renamed as libjhead_jni

Change-Id: I0ceff1ad288c7ce2255826d5d5ba9ca1f121a556
2013-12-20 13:28:00 -08:00
Jeff Sharkey
6398343e83 Return EXIF thumbnails when available.
Adds new ExifInterface method to extract the thumbnail range from
a larger image file, and use that to return an AssetFileDescriptor.

When decoding an AssetFileDescriptor thumbnail with offsets, read out
the raw data entirely, since Skia uses lseek() aggressively.

Bug: 10412208
Change-Id: I7906cdf82c0c3794cec7043c801a86f66efeb143
2013-08-23 12:19:19 -07:00
Dave Burke
c9b6be7c40 Add nullness check.
Bug: 8313121
Change-Id: Id2221e1c77eaf749ab4c4f6ec4cfa6684927c751
2013-03-04 15:20:42 -08:00
Keun young Park
bb52c49c9a rename exif to exif_jni due to refactoring in external/jhead
- also pull libexif_jni from media_jni

Bug: 6623618
Change-Id: I4f06a4614c5fddcf98d95caff16a2c40f345dade
2012-06-07 10:36:41 -07:00
Glenn Kasten
30c918ce7f Use final on new member variables
Use final for member fields initialized to a new and that are never modified.

Change-Id: I042352c7bc21879613e7a50b1205b6923f8083cf
2012-01-27 16:13:00 -08:00
Oscar Rydhe
a113a075ca Improved conversion accuracy of exif geotag data
Changed degrees and minutes of geotag data into double to avoid
data loss during cast.

Also improved error handling if geotag data can't be parsed.

bug:3381761
Change-Id: I864843c7fc699fe81e6acba801fe46d10a01925b
2011-01-24 12:52:07 +08:00
Ray Chen
4414eb4b29 Add more EXIF tags.
Change-Id: I77a02a6de6bb4c364bb9718f7bed15468a38a279
2010-11-05 16:18:29 +08:00
Wu-cheng Li
c109190b69 Add support for gps altitude EXIF tags.
Also improve the precision of getLatLong().

Change-Id: Id2c60f0d1d19e9da173b5ec1228f03c2195e189f
2010-05-27 15:59:05 +08:00
Ray Chen
e208377fba Add GPSProcessingMethod tag to ExifInterface.
Change-Id: I7575ae3195dc510e7020368794a66bb064839104
2010-03-11 17:41:04 -08:00
Wu-cheng Li
5d9661be8e Add getAttributeDouble() and focal length tag.
bug:2375989
2010-02-04 16:11:38 +08:00
Ray Chen
3a8cab88e7 Add GpsDateTime support to ExifInterface and correct images table's date_taken value to UTC timestamp.
http://b/2376777
2010-02-02 18:59:03 -08:00
Ray Chen
052d9c8b41 Images.Media.DATE_TAKEN should be in milliseconds.
http://b/2297371
2009-12-04 11:51:25 -08:00
Ray Chen
d5fa58cf3d Fix timezone issue to comply with EXIF standard. 2009-11-30 14:39:08 -08:00