0

我正在尝试从从 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 数据存在

4

1 回答 1

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;
    }
于 2017-06-06T08:43:33.447 回答