下载图像并在Android上保留Exif数据

时间:2013-09-17 11:21:59

标签: java android exif

目前我正在尝试从Web服务器下载图像并保留附加到图片的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。

1 个答案:

答案 0 :(得分:0)

Android Api不允许您仅从exif读取Stream中的File数据。更多 您可以使用此链接获取信息:Reading android jpeg EXIF metadata

从给定Click Here的链接下载元数据提取器以下载库,选择版本 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) {}