summaryrefslogtreecommitdiffstats
path: root/WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java
diff options
context:
space:
mode:
authorBrint E. Kriebel <bekit@cyngn.com>2014-06-30 22:42:18 -0700
committerBrint E. Kriebel <bekit@cyngn.com>2014-06-30 22:42:18 -0700
commit1cf1cb46e81002f756e6141fcd813eb1df44a2f5 (patch)
tree74c0a8aa932193154abc4e1981c17a6c238582b4 /WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java
parent4b66843493c8a8cc2bf01ac45566b71b2393a5ec (diff)
parentebf8f37515c23a167cef2bb8cff04854c52fd35b (diff)
downloadandroid_packages_apps_Trebuchet-1cf1cb46e81002f756e6141fcd813eb1df44a2f5.tar.gz
android_packages_apps_Trebuchet-1cf1cb46e81002f756e6141fcd813eb1df44a2f5.tar.bz2
android_packages_apps_Trebuchet-1cf1cb46e81002f756e6141fcd813eb1df44a2f5.zip
Merge branch 'cm-11.0' into stable/cm-11.0
Conflicts: res/values-et/cm_strings.xml res/values-th/cm_arrays.xml res/values-th/cm_strings.xml Change-Id: If66ec311e06bca36268c52b42b61425c3b044556
Diffstat (limited to 'WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java')
-rw-r--r--WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java b/WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java
new file mode 100644
index 000000000..68e972fb7
--- /dev/null
+++ b/WallpaperPicker/src/com/android/gallery3d/exif/ExifReader.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gallery3d.exif;
+
+import android.util.Log;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * This class reads the EXIF header of a JPEG file and stores it in
+ * {@link ExifData}.
+ */
+class ExifReader {
+ private static final String TAG = "ExifReader";
+
+ private final ExifInterface mInterface;
+
+ ExifReader(ExifInterface iRef) {
+ mInterface = iRef;
+ }
+
+ /**
+ * Parses the inputStream and and returns the EXIF data in an
+ * {@link ExifData}.
+ *
+ * @throws ExifInvalidFormatException
+ * @throws IOException
+ */
+ protected ExifData read(InputStream inputStream) throws ExifInvalidFormatException,
+ IOException {
+ ExifParser parser = ExifParser.parse(inputStream, mInterface);
+ ExifData exifData = new ExifData(parser.getByteOrder());
+ ExifTag tag = null;
+
+ int event = parser.next();
+ while (event != ExifParser.EVENT_END) {
+ switch (event) {
+ case ExifParser.EVENT_START_OF_IFD:
+ exifData.addIfdData(new IfdData(parser.getCurrentIfd()));
+ break;
+ case ExifParser.EVENT_NEW_TAG:
+ tag = parser.getTag();
+ if (!tag.hasValue()) {
+ parser.registerForTagValue(tag);
+ } else {
+ exifData.getIfdData(tag.getIfd()).setTag(tag);
+ }
+ break;
+ case ExifParser.EVENT_VALUE_OF_REGISTERED_TAG:
+ tag = parser.getTag();
+ if (tag.getDataType() == ExifTag.TYPE_UNDEFINED) {
+ parser.readFullTagValue(tag);
+ }
+ exifData.getIfdData(tag.getIfd()).setTag(tag);
+ break;
+ case ExifParser.EVENT_COMPRESSED_IMAGE:
+ byte buf[] = new byte[parser.getCompressedImageSize()];
+ if (buf.length == parser.read(buf)) {
+ exifData.setCompressedThumbnail(buf);
+ } else {
+ Log.w(TAG, "Failed to read the compressed thumbnail");
+ }
+ break;
+ case ExifParser.EVENT_UNCOMPRESSED_STRIP:
+ buf = new byte[parser.getStripSize()];
+ if (buf.length == parser.read(buf)) {
+ exifData.setStripBytes(parser.getStripIndex(), buf);
+ } else {
+ Log.w(TAG, "Failed to read the strip bytes");
+ }
+ break;
+ }
+ event = parser.next();
+ }
+ return exifData;
+ }
+}