ファーストで要求を作成した後
//create a file to write bitmap data
File f = new File(context.getCacheDir(), filename);
f.createNewFile();
//Convert bitmap to byte array
Bitmap bitmap = your bitmap;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
//write the bytes in file
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();
を提出するためにあなたのビットマップを変換しますあなたのサービスコールは、この
interface Service {
@Multipart
@POST("/yourEndPoint")
Call<ResponseBody> postImage(@Part MultipartBody.Part image);
}
ように見えるそしてちょうどビットマップからファイルを作成し、あなたのAPI
Service service = new Retrofit.Builder().baseUrl("yourBaseUrl").build().create(Service.class);
Call<okhttp3.ResponseBody> req = service.postImage(body);
req.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
// Do Something
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
を呼び出すことは時間がかかりすぎるべきで
あなたのファイルをアップロードするために
Multipart
...さこれを高速化することも可能ですし、asynctaskでローダーを表示するだけで済みますか? –ビットマップからファイルを作成するのは長いプロセスで、メモリが必要です。あなたはAsynctaskかTheadを使うべきです。 UIをブロックしないように、MainThreadからファイルの作成を移動する必要があります。そして、はい、このプロセスでローダーを表示します。 –
私はしたが、それは毎回25〜30秒かかる...カムからキャプチャするとき。 –