2017-06-12 4 views
1

Picasaを使用して画像のサイズを変更し、HttpPostを使用して画像をアップロードする最適な方法は何ですか?ピカソを使用して画像のサイズを変更し、HttpPostに追加

Bitmap bmp = Picasso.with(context) 
        .load(path) 
        .resize(1000, 1000) 
        .centerInside() 
        .onlyScaleDown() 
        .get(); 

MultipartEntity entity = new MultipartEntity(); 
entity.addPart("image", new FileBody(file)); 

これを達成するための最良の方法(メモリ)は何ですか?

明確化:今私は

  • をやっているビットマップB = Picasso.resize()get()は;。

  • を提出する

  • 新しいファイルを作成します

  • 書き込みビットマップのB HttpPost

そして、もっと効率的な方法

答えて

2

がある場合は、私が探してる内のファイルをインクルードこのようにすることができます:

Bitmap bmp = Picasso.with(context) 
       .load(path) 
       .resize(1000, 1000) 
       .centerInside() 
       .onlyScaleDown() 
       .get(); 

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 

HttpEntity entity = MultipartEntityBuilder.create() 
     .addBinaryBody("image", new ByteArrayInputStream(stream.toByteArray()), ContentType.create("image/png"), "filename.png") 
     .build(); 

しかし、私が知る限り、Apache HttpClientはで、Androidではが推奨されておらず、OkHttp3ライブラリを使用してHTTPリクエストを行うことをおすすめします。

例:

Bitmap bitmap = Picasso.with(context) 
      .load(path) 
      .resize(1000, 1000) 
      .centerInside() 
      .onlyScaleDown() 
      .get(); 

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 

RequestBody requestBody = new MultipartBody.Builder() 
     .addFormDataPart("image", "filename.png", RequestBody.create(MediaType.parse("image/png"), stream.toByteArray())) 
     .build(); 

Request request = new Request.Builder() 
     .url("https://example.com") 
     .post(requestBody) 
     .build(); 

OkHttpClient client = new OkHttpClient(); 

client.newCall(request).enqueue(new Callback() { 
    @Override 
    public void onFailure(Call call, IOException e) { 
     // handle failure 
    } 

    @Override 
    public void onResponse(Call call, Response response) throws IOException { 
     // handle server response 
    } 
}); 
関連する問題