图像方向和ExifInterface

时间:2014-10-13 17:29:51

标签: java android bitmap

我想获得位图的方向。我使用这段代码:

ExifInterface ei = new ExifInterface(photoPath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION,      
ExifInterface.ORIENTATION_NORMAL);

switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
    rotateImage(bitmap, 90);
    break;
case ExifInterface.ORIENTATION_ROTATE_180:
    rotateImage(bitmap, 180);
    break;
// etc.
}

我的问题是这一行:

ExifInterface ei = new ExifInterface(photoPath);

在此代码中 photoPath 是一个字符串,但我没有任何字符串路径!我在Bitmap中的内存中加载了Bitmap!我如何设置ExifInterface的路径?

2 个答案:

答案 0 :(得分:0)

  

我如何设置ExifInterface的路径?

你没有。

但是,当您结束Bitmap时,您也没有任何EXIF标题。

如果您尝试将此应用于相机拍摄的照片,并且该照片为JPEG格式,则表示已编码照片的byte[]可以传递给readExif() { {1}}对象(从零参数构造函数创建):

ExifInterface

否则,您可能希望解释此ExifInterface exif=new ExifInterface(); exif.readExif(data); 的来源。

答案 1 :(得分:0)

  • 创建临时文件并调用标准new ExifInterface(tempFile)的第一个解决方案。我不喜欢效率低下的

  • 其他解决方案是here,但您必须通过添加第三方代码来扩大您的APK。

  • 我个人选择的解决方案是将图像捕获到临时文件时旋转,然后将其保存在Sqlite数据库的博客字段中。然后在观看时,我不需要处理轮换,以及无法读取EXIF标题的问题,因为我没有文件。