2012-03-16 21 views
2

Androidからサーバーに画像を送信します。私は画像をBase64 Stringにデコードし、それをサーバーに送信しました。私は次のコードを使用して画像を文字列に変換しますBase64でエンコードされた文字列をJavaサーバーの画像ファイルに変換します。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon); 
    ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao); 
    byte [] byteArray = bao.toByteArray(); 
    String imageToString=Base64.encodeToString(byteArray,Base64.DEFAULT); 
    return imageToString; 

私はそれをサーバー側の画像に戻すことができません。私は私が偽ハフマンテーブル定義に例外といつかイム=ヌル例外を取得しています。この

byte[] imageBytes=Base64.decode(imageString); 
    InputStream in = new ByteArrayInputStream(imageBytes); 
    BufferedImage bImageFromConvert = ImageIO.read(in); 
    ImageIO.write(bImageFromConvert, "jpg", new File("D:\\myImage.jpg")); 

を試してみました。エラーメッセージjavax.imageio.IIOException::私は

編集作っています何の間違いplzは私に言う偽のハフマンテーブル定義この行で

BufferedImage bImageFromConvert = ImageIO.read(in); 
+1

間違いを試してみてください(それはフランス語だが、詳細なコード例があります):ここでは、この上のチュートリアルがあります。 b) 'Base64.decode()'出力をファイルとして保存し、元のデータと比較してイメージビューアーで開くことができるかどうかを確認します。 – zapl

答えて

1

をさて、ここで複数の問題があるかもしれません。私が考える最初の事実は、あなたがイメージのバイトをStringに変換するということです(Android環境のデフォルトのエンコーディングでエンコーディングしたものをエンコーディングします)。同じエンコーディングを使用することを保証せずにStringをバイトに戻します同じバイト)。

なぜバイトを直接送信しないのですか?それとも、HTTPマルチパート形式でファイルを直接アップロードする方が良いでしょうか。

http://flo.dauran.com/194-android-uploader-une-image-sur-une-serveur-web/

2

a)はエラーメッセージを投稿していなかったこの

 byte[] imageBytes=Base64.decode(imageString,Base64.NO_WRAP); 
     InputStream in = new ByteArrayInputStream(imageBytes); 
     Bitmap b = BitmapFactory.decodeStream(in); 
関連する問題