【问题标题】:Download Image and retain Exif data on android在android上下载图像并保留Exif数据
【发布时间】:2013-09-17 19:46:01
【问题描述】:

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

【问题讨论】:

    标签: java android exif


    【解决方案1】:

    Android Api 不允许您从 Stream 读取 exif 数据,只能从 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) {}
    

    【讨论】:

    • 我已经尝试使用这个库的更新版本,但是我的项目不再构建,所以我跳过了这个解决方案。也许我会用这个版本再试一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多