Androidでは、電話機の写真からビットマップをデコードすると、元の画像のEXIFデータが失われます。このBitmapをソケット経由でサーバーに送信していて、不足しているEXIFデータを送信するデータに再接続したいと考えています。Androidのシリアル化されたビットマップにEXIFメタデータを添付するにはどうすればいいですか?
Bitmap bitmap = ...
ByteArrayOutputStream stream = new ByteArrayOutputStream(bitmap);
bitmap.compress(CompressFormat.JPEG, 70, stream);
byte[] input = stream.toByteArray();
私はEXIFで取得するためにExifInterfaceを使用したい:
私はメディアストアからBitmapオブジェクトをロードし、ソケットの上にそれを送信するための準備でバイト配列にそれを圧縮し、いくつかのコードを持っていますメタデータをSDカードの元のjpegに入れて、どうにかそれを送信バイト配列に追加して、サーバ側で正しいEXIFをjpegで抽出できるようにします。これまでのところ、私はすべてのEXIFデータを読み取るためにExifInterfaceを使用するために管理:
String path = ... //bitmap file path
ExifInterface exif = new ExifInterface(path);
... = exif.getAttribute(...)
EDIT:最適には、私は何のライブラリを使用しない解決策を見つけるしたいと思います。 EXIFを含むオリジナルのjpegのバイト配列のインデックスを取得して、これらのバイトをbitmap.compress(...)
によって生成されるバイト配列に追加することができれば、これが最適です。
あなたはバイト配列にEXIF情報を追加することで成功しましたか? – Vikas