我试图从EXTERNAL_CONTENT_URI意图中选择的图像中收集EXIF信息(拍摄日期,地理标记,方向),但似乎如果图片来自互联网(例如Google照片)EXIF数据以某种方式被截断。
例如,如果我从PC上的photos.google.com下载网络浏览器中的图片,其大小为4.377.104字节,并且所有EXIF数据都在那里。 如果我使用以下命令下载相同的图像:
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
其大小为4.363.578字节(比原始字节少13526字节)并且所有EXIF数据都丢失
有关如何下载完整原始图像的想法吗?
PS:如果我从图库中选择了一张从手机拍摄的图片并且它仍然存放在手机的存储空间中,则会显示EXIF数据
答案 0 :(得分:1)
我终于找到了解决方案。使用
在onActivityResult方法中获取源图像Uri之后Uri selectedImage = data.getData();
我使用以下函数从图片中获取必要的数据
public static ImageInfo getImageInfo(Context context, Uri photoUri) {
Cursor cursor = context.getContentResolver().query(photoUri,
new String[] {
MediaStore.Images.ImageColumns.ORIENTATION,
MediaStore.Images.ImageColumns.LATITUDE,
MediaStore.Images.ImageColumns.LONGITUDE,
MediaStore.Images.ImageColumns.DATE_TAKEN } , null, null, null);
if (cursor.getCount() != 1) {
return null;
}
cursor.moveToFirst();
ImageInfo i = new ImageInfo();
i.Orientation = cursor.getInt(0);
i.Lat = cursor.getDouble(1);
i.Lon = cursor.getDouble(2);
i.DateTakenUTC = cursor.getLong(3)/1000;
cursor.close();
return i;
}