2011-12-20 3 views
2

JPG画像をバイト[]としてアップロードしますが、バイト[]に変換する前にEXIFのビットマップストリップをアップロードしています。 raw jpgをBitmapに変換せずにアップロードするにはどうすればよいですか?Android:EXIFを失うことなくJPG画像をアップロード

File imagefile = new File(filepath + "DSC00021.jpg"); 
FileInputStream fis = new FileInputStream(imagefile); 
Bitmap bi = BitmapFactory.decodeStream(fis); // EXIF info lost 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bi.compress(Bitmap.CompressFormat.JPG, 100, baos); 
byte[] data = baos.toByteArray(); 

p.s.私はサードパーティのライブラリを使用したくありません。 ExifInterfaceはストリーム/バイト配列ではなく、ファイルに書き込むことができます。

+2

Bitmapオブジェクトに変換するのではなく、FileInputStreamからバイト配列にファイルの内容全体を読み取るのはなぜですか?グーグルでは、ファイルの内容をバイト配列に変換する方法がたくさんあります。 –

答えて

0

Bitmap bi = BitmapFactory.decode(filepath + "DSC00021.jpg"); 

あなたはあまりにもオプションを指定することができることにより、API documentation

それとも、別のファイルからのメタデータを交換したい場合は、sanselanは、おそらくになります見て、ビットマップにファイルを変換最善の選択。これは、イメージを操作するときに、例えばサイズの変更など、非常に役立ちます。

sample codeはあなたを正しい方向に誘導します。

+0

私は言いました、私はサードパーティのライブラリでそれをしたくありません。 – Taranfx

0

上記のコードはほとんどの場合動作しません。大きなサイズの画像をデコードする場合は、「メモリ不足エラー」が発生します。 bitmpafactoryオプションを使用してデコードします。

関連する問題