使用Android SDK我的JPEG中没有看到任何EXIF

时间:2010-02-24 04:46:47

标签: android

我正在使用android.hardware.Camera类来拍照,我发现根本没有exif数据存储在图像中。如果我在我的DROID上使用相机应用程序,则保存所有exif数据。

我尝试使用Set()和SetRotation()设置旋转,看看是否可以显示一些exif数据。当我用exif阅读器查看笔记本电脑上的图像时,它告诉我图像没有exif数据。

我看过一些类似的帖子,但我还没有找到解决方法。有没有人在其他手机上看到这个问题?

我正在使用Android 2.0.1 SDK

3 个答案:

答案 0 :(得分:13)

经过一些研究后,我发现当我使用以下代码将图像数据保存到SD卡时,我丢失了EXIF信息。

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 0;
Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
FullFileName = sdImageMainDirectory.toString() + "/DCIM/Camera/" + getDateTime() + ".jpg";
fileOutputStream = new FileOutputStream(FullFileName);
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
myImage.compress(CompressFormat.JPEG, quality, bos);
bos.flush();
bos.close();

我将上面的代码更改为此,现在所有来自相机的EXIF数据都存在。

FileOutputStream file = new FileOutputStream(FileName);
file.write(imageData);

答案 1 :(得分:2)

谢谢scntln!

我在我的Camera FX应用程序中确实使用了这个。它适用于在JPEGS中嵌入EXIF标记(不在PNG文件中)。

Android SDK 2.x版本有自己的ExifInterface类,您可以使用它。 但是如果你需要支持1.6或更低,那么我的sanselandroid端口应该可以正常工作。

我仍然在修剪sanselanandroid项目的过程中,只包含了编写EXIF标签所必需的内容。

顺便说一句:我在这里注意到我拼错了'兼容'。修正了我的博客:)

答案 2 :(得分:1)

this这样的帖子中可以看出,相机类不支持EXIF数据,相机应用程序使用自己的EXIF实现。

一个选项是浏览该线程中提到的源,看看是否有任何可以使用的源。

另一个选项是sanselandandroid项目。开发人员admits认为它不是一个完美的端口,但是他的开发人员是以Android为中心的Google群组中的一个积极参与者,并出售他自己的相机软件Snap FX,其中包括一个名为Camera FX的应用程序,可以保存EXIF数据。 product page

祝你好运。

  

使用与大多数软件编辑应用程序兼容的EXIF标记保存图片。