-1

私はサーバーに画像をアップロードしようとしています。ロー・サイズの画像アップロード

BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
Bitmap picture = BitmapFactory.decodeFile(imagePath, bmOptions); 

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao); 
byte[] bytes = bao.toByteArray(); 

builder.addPart("uploadedfile", new ByteArrayBody(bytes, "name" + ".jpg")); 

たとえば、画像のサイズは300kbですが、アップロードされる画像のサイズは800kbです。

サイズを増やさずに画像を(パスで選択して)送信するにはどうすればよいですか?

@greenapps右


SOULUTION。イメージをファイルとして変換しました:

public static byte[] fullyReadFileToBytes(File f) throws IOException { 
    int size = (int) f.length(); 
    byte bytes[] = new byte[size]; 
    byte tmpBuff[] = new byte[size]; 
    FileInputStream fis= new FileInputStream(f);; 
    try { 

     int read = fis.read(bytes, 0, size); 
     if (read < size) { 
      int remain = size - read; 
      while (remain > 0) { 
       read = fis.read(tmpBuff, 0, remain); 
       System.arraycopy(tmpBuff, 0, bytes, size - remain, read); 
       remain -= read; 
      } 
     } 
    } catch (IOException e){ 
     throw e; 
    } finally { 
     fis.close(); 
    } 

    return bytes; 
} 
+0

イメージを64ビットの文字列エンコーディングとして送信しようとしましたか? – Eenvincible

+1

イメージファイルを中間のビットマップを使用せずにバイト配列に配置します。 – greenapps

+0

@greenappsあなたはこのコメントを回答として追加することができます。 –

答えて

1

イメージファイルを中間のビットマップを使用せずにバイト配列に置きます。

関連する問題