1

現在、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 がまったくありません。

4

1 に答える 1

0

Android Api では、 からのみデータを読み取ることができexifます。詳細については、このリンクを使用できます: Android jpeg EXIF メタデータの読み取りStreamFile

指定されたリンクからメタデータ エクストラクタをダウンロードします。ここをクリックしてライブラリをダウンロードします。バージョン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 に答える