2017-09-22 11 views
0

나는 인터넷에서 튜토리얼을 따라 갱신 할 수있는 이미지를 업로드했습니다. 여기 내 코드입니다 :이미지를 업그레이드 할 때 서버에 보내기 전에 압축 된 이미지를 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

시도 :

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

두 번째 정의 압축 Bitmap (bitmap1) 아래와 같이 :

먼저 ByteArrayOutputStreambyte[] 객체 정의

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

BYTE = bytearrayoutputstream.toByteArray(); 

셋째로 변환 byte[]Base64

지금 당신이 MultiPart를 사용하지 않고 직접 Base64 이미지를 보낼 수 있습니다 :
String base64 = Base64.encodeToString(BYTE, Base64.DEFAULT); 
Bitmap compressedBitmap = BitmapFactory.decodeByteArray(BYTE,0,BYTE.length); 

넷째, 마지막으로 당신은 CompressedBase64 변환 된 이미지를 얻을.

+0

죄송합니다. IM 비트 혼동. 메신저는 안드로이드에서 새로운. 내 academicClient 클래스에서 변경해야합니까? 내가 Multipart없이 보낼 수 있다고 했잖아? –

+0

조금 혼란 스럽네요, 저는 여전히 안드로이드 개발에서 새로운 사람입니다. 내 academicClient 클래스 및 maindfeed 클래스에 약간의 변경 사항이 있습니까? 내가 Multipart를 사용하지 않고 보낼 수 있다고했기 때문에? –

+0

예 Base64 (이미지) 문자열을 서버로 보낼 수 있습니다. –