2017-09-22 8 views
0

私はインターネットでのチュートリアルに従ったretrofitで画像をアップロードしました。 は、ここに私のコードです:イメージをbase64形式でアップロードし、改造してサーバーに送信する前にイメージを圧縮しましたか?

AcademicClient.class

@Multipart 
    @POST("/") 
    Call<ResponseBody> postImage(@Part MultipartBody.Part image, @Part("name")RequestBody name); 

MainFeed.class Base64でそれを変換し、それは、サーバに送信する前に最初の画像を圧縮する方法

File file = new File(filePath); 
RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"),file); 
     MultipartBody.Part body = MultipartBody.Part.createFormData("upload",file.getName(),reqFile); 
     RequestBody name = RequestBody.create(MediaType.parse("text/plain"),"upload_test"); 

     Log.d("xxxxxxx",body + " ---- "+ name); 

     AcademicClient client = ServiceGenerator.createService(AcademicClient.class); 
     Call<ResponseBody> call = client.postImage(body,name); 
     call.enqueue(new Callback<ResponseBody>() { 
      @Override 
      public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 

      } 

      @Override 
      public void onFailure(Call<ResponseBody> call, Throwable t) { 

      } 
     }); 

改造?コードの下

答えて

2

試してみてください。

まずByteArrayOutputStreambyte[]オブジェクトを定義します。byte[]

Base64に変換

bitmap1.compress(Bitmap.CompressFormat.JPEG,40,bytearrayoutputstream); 

BYTE = bytearrayoutputstream.toByteArray(); 

サード:

bytearrayoutputstream = new ByteArrayOutputStream(); 
byte[] BYTE; 

第二には、以下のような非圧縮Bitmap(bitmap1)を定義

String base64 = Base64.encodeToString(BYTE, Base64.DEFAULT); 
Bitmap compressedBitmap = BitmapFactory.decodeByteArray(BYTE,0,BYTE.length); 

第四には、最終的にあなたはCompressedBase64変換した画像を取得する:

今、あなたはMultiPartを使用せずに直接Base64画像を送信することができます。

+0

IM申し訳ありませんが、IMのビットは混乱しています。 IMはアンドロイドで新しいです。私はacademicClientクラスで変更する必要がありますか?あなたは私がMultipartなしで送ることができると言いましたか? –

+0

私はちょっと混乱しています。私はアンドロイド開発ではまだ新しいです。私のacademicClientクラスとmaindfeedクラスにいくつかの変更がありますか?あなたは私がMultipartを使わずに送ることができると言ったので? –

+0

はい、Base64(画像)文字列をサーバーに送信できます。 –

関連する問題