我需要阅读Exif
的一些Image
属性(使用Camera
或从Gallery
中选择)。
以下是我发布Camera
:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File file = new File(myObject.getLocalUrl());
Uri fileURI = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileURI);
startActivityForResult(intent, CAPTURE_IMAGE_REQUEST_CODE);
以下是我发布Gallery
Picker
的方法:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, getString(R.string.image_picker_select_image)), SELECT_IMAGE_FROM_GALLERY_REQUEST_CODE);
问题在于,例如,在第一种情况下(Camera
),在Image
被取消并保存在External
Storage
后,{{1}信息迷失了。
从Exif
中挑选的Images
相同。这就是我在Gallery
方法中获得Image
的方式:
onActivityResult
最后,这里是我阅读Uri uri = data.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
数据的方式:
Exif
我尝试了下一个:
ExifInterface exifInterface = null;
try {
exifInterface = new ExifInterface(myObject.getLocalUrl());
} catch (IOException e) {
e.printStackTrace();
}
String exifOrientation = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);
String exifMake = exifInterface.getAttribute(ExifInterface.TAG_MAKE);
String exifModel = exifInterface.getAttribute(ExifInterface.TAG_MODEL);
(不使用我的picture
)来Camera
。App
Exif
数据
所以我猜问题是,保存ExifInterface
时(使用Image
拍摄后)或Camera
中的Image
被选中Gallery
{1}}数据丢失。
我在Exif
发布了至少20-30条帖子,但基本上每个人都遇到的问题是Stackoverflow
orientation
信息丢失了,所以解决方法是写在exif
数据中右orientation
。
这个解决方案不适合我,因为我不想覆盖Exif
数据,我只想阅读原始数据。
任何想法/提示? 感谢。
答案 0 :(得分:0)
尝试使用以下方法:将Uri
传递给此方法
public static int getOrientation(Context context, Uri photoUri) {
Cursor cursor = context.getContentResolver().query(photoUri,
new String[] { MediaStore.Images.ImageColumns.ORIENTATION },null, null, null);
try {
if (cursor.moveToFirst()) {
return cursor.getInt(0);
} else {
return -1;
}
} finally {
cursor.close();
}
}
有许多ImageColumns可用于重新分割图像信息。