代码之家  ›  专栏  ›  技术社区  ›  Anggit Prayogo

上传base64格式的图像和压缩后的图像,然后再将其发送到服务器?

  •  0
  • Anggit Prayogo  · 技术社区  · 7 年前

    我已经上传图像与改装,我从教程在互联网上遵循。

    学术客户。班

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

    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) {
    
                }
            });
    

    如何将其转换为Base64并首先压缩图像,然后再将其发送到改造中的服务器?

    1 回复  |  直到 7 年前
        1
  •  2
  •   nivesh shastri    7 年前

    ByteArrayOutputStream byte[] 对象:

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

    第二个定义未压缩 Bitmap (位图1)如下所示:

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

    字节[] Base64

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

    第四,你终于得到了 Compressed 转换后的图像:

    现在你可以发送 无需使用 MultiPart