1

目前我正在尝试从网络服务器下载图像并保留附加到图片的 Exif 数据。下载图像本身完全没有问题。示例代码是这样的(没有任何 try/catch 或 AsyncTask 相关代码使其可读)

final HttpGet request = new HttpGet("IMAGE_URL");
final AndroidHttpClient httpClient = AndroidHttpClient.newInstance("Android");

HttpResponse response   = httpClient.execute(request);
InputStream inputStream = inputStream = response.getEntity().getContent();

现在我只需调用BitmapFactory从 Inputstream 中创建一个 Bitmap 对象,如下所示

BitmapFactory.decodeStream(inputStream);

首先,我认为 BitmapFactory 是罪魁祸首,并试图从输入流创建的文件中读取 Exif 数据。ExifInterface 无法获取 Exif 数据,在 Windows 上打开保存的图像根本没有 Exif。

4

1 回答 1

0

Android Api 不允许您从 a 读取exif数据Stream,只能从 a读取数据File。有关更多信息,您可以使用此链接:Reading android jpeg EXIF metadata

从给定的链接下载元数据提取器单击此处下载库选择版本2.5.0.RC-3.zip

提取jar文件夹并将jar导入项目中的libs文件夹,然后执行以下代码

try 
{
    InputStream is = new URL("your image url").openStream();
    BufferedInputStream bis = new BufferedInputStream(is);
    Metadata metadata = ImageMetadataReader.readMetadata(bis,true);

    for (Directory directory : metadata.getDirectories()) 
    {
        for (Tag tag : directory.getTags()) 
        {
            System.out.println(tag);
        }
    }
}
catch (ImageProcessingException e){}
catch (IOException e) {}
于 2013-09-17T11:38:49.713 回答