2017-12-21 21 views
-2

私のアプリからサーバーに画像をアップロードし、その画像をimageviewに表示しました。イメージビューの既存のイメージをサーバーに再アップロードするときにエラーが発生します。 、うまく機能改造を介して画像をアップロードするImageView Androidの画像からバイト配列を取得

uploadTV.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Drawable avatar_drawable = new BitmapDrawable(getResources(), decBitmap); 

      if (userImage.getDrawable() != null){ //I'm trying to check if imageview has image or not 
       Intent editProfileIntent = null; 

       if (userImage.getDrawable() == avatar_drawable || imgBytes.length == 0) { // error occurs here. I'm trying to check if imageview's image is same as retrieved image 

        Bitmap imageViewBitmap = ((BitmapDrawable) userImage.getDrawable()).getBitmap(); 

        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        imageViewBitmap.compress(Bitmap.CompressFormat.PNG, 10, baos); 
        imgBytes = baos.toByteArray(); 

        upLoadImageBytes(imgBytes); 
        editProfileIntent = new Intent(MyPictureActivity.this, EditProfileActivity.class); 
        startActivity(editProfileIntent); 

       } 

      } else { 
       Snackbar.make(findViewById(android.R.id.content), "Select an Image From Camera or Gallery", Snackbar.LENGTH_LONG).show(); 
      } 
     } 
    }); 

方法:

private void upLoadImageBytes(byte[] imgBytes) { 

    OkHttpClient.Builder builder = new OkHttpClient.Builder(); 
    builder.addInterceptor(new Interceptor() { 
     @Override 
     public Response intercept(Chain chain) throws IOException { 
      Request originalReq = chain.request(); 

      Request request = originalReq.newBuilder() 
        .addHeader("x-access-token", key_token) 
        .method(originalReq.method(), originalReq.body()) 
        .build(); 

      return chain.proceed(request); 
     } 
    }); 

    OkHttpClient client = builder.build(); 
    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(Constants.BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .client(client) 
      .build(); 

    ImageService anInterface = retrofit.create(ImageService.class); 

    RequestBody imageFileBody = RequestBody.create(MediaType.parse("image/*"), imgBytes); 

    MultipartBody.Part partBody = MultipartBody.Part.createFormData("avatar", "avatar.jpg", imageFileBody); 

    Call<ImageResponse> imageCall = anInterface.upLoadImage(partBody); 
    imageCall.enqueue(new Callback<ImageResponse>() { 
     @Override 
     public void onResponse(Call<ImageResponse> call, retrofit2.Response<ImageResponse> response) { 
      Log.d(TAG, "Response body is:\t" + response.body().toString()); 
     } 

     @Override 
     public void onFailure(Call<ImageResponse> call, Throwable t) { 
      Log.d(TAG, "Response error message is:\t" + t.getMessage().toString()); 
     } 
    }); 

} 

PS:私は何をしようとしているがあり、これまで

ava.lang.NullPointerException: Attempt to get length of null array 
                      at com.billionusers.tingting.activities.MyPictureActivity$3.onClick(MyPictureActivity.java:145) 
                      at android.view.View.performClick(View.java:5690) 
                      at android.view.View$PerformClick.run(View.java:22693) 
                      at android.os.Handler.handleCallback(Handler.java:836) 
                      at android.os.Handler.dispatchMessage(Handler.java:103) 
                      at android.os.Looper.loop(Looper.java:203) 
                      at android.app.ActivityThread.main(ActivityThread.java:6269) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924) 

私のコード:このエラーを表示しますボタンをクリックすると、自分の画像ビューに含まれる画像を再アップロードすることができます。誰かが間違ったplsを言うことができますか?ありがとう

答えて

0

あなたの 'imgBytes'配列はnullで、例外と同様に、null配列の長さをチェックすることはできません。これは、同じエラーをスロー

if (userImage.getDrawable() == avatar_drawable || imgBytes == null || imgBytes.length == 0) { 
    .... 
} 
+0

はこれを試してみてください。それを解決するために私は何ができますか? – Error404

関連する問題