1

image (갤러리에서 선택했거나 카메라에서 찍은 것)을 자르고 그것을 전달하려고합니다. 다른 activityimage을 내 firebase 저장소에 업로드해야합니다.이미지 작물 활동이 이미지 활동을 수신 활동으로 보내지 않음 (안드로이드 이미지 크롭)

처음에는 (이미지 자르기없이) 모든 것이 잘되었습니다. 나는 image을 전달하고 업로드 할 수 있었지만, 내 onActivityResult에 이미지 자르기 코드를 추가 한 후에 'crop'을 누른 후 imageCropActivity를 닫고 MainActivity로 점프합니다.

나는 시도했지만 실제로 그 이유를 알 수 없었다. 어쩌면 나는 뭔가를 놓치고있다. 어떤 아이디어? 나는이 libary 사용하고 이미지 자르기

: https://github.com/ArthurHub/Android-Image-Cropper

주요 활동을

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     mImageUri_gallery = data.getData(); 
     mImageUri_camera = data.getData(); 


     if (requestCode == 100 && resultCode == RESULT_OK) { 
      CropImage.activity(mImageUri_gallery) 
        .setGuidelines(CropImageView.Guidelines.ON) 
        .start(this); 
      if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
       CropImage.ActivityResult result = CropImage.getActivityResult(data); 
       if (resultCode == RESULT_OK) { 
        Uri resultUriGallery = result.getUri(); 
        Intent intentGallery = new Intent(MainActivity.this, ImagePostActivity.class); 
        intentGallery.putExtra("image-uri", resultUriGallery.toString()); 
        startActivity(intentGallery); 
       } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
        Exception error = result.getError(); 
       } 
      } 

     } else if (resultCode != RESULT_CANCELED && data != null) { 
      if (requestCode == 200 && resultCode == RESULT_OK) { 
       CropImage.activity(mImageUri_camera) 
         .setGuidelines(CropImageView.Guidelines.ON) 
         .start(this); 
       if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
        CropImage.ActivityResult result = CropImage.getActivityResult(data); 
        if (resultCode == RESULT_OK) { 
         Uri resultUriCamera = result.getUri(); 
         Intent intentCamera = new Intent(MainActivity.this, ImagePostActivity.class); 
         intentCamera.putExtra("image-uri", resultUriCamera.toString()); 
         startActivity(intentCamera); 
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
         Exception error = result.getError(); 
        } 
       } 

      } 
     } 


    } 

ImagePostActivity

public class ImagePostActivity extends AppCompatActivity { 

    public static TextView txt_btn_post; 
    public static EditText mPostTitle; 
    public static ImageView imagePostPreview; 
    private StorageReference mStorage; 
    private DatabaseReference mDatabase; 
    private ProgressDialog mProgress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image_post); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     mStorage = FirebaseStorage.getInstance().getReference(); 
     mDatabase = FirebaseDatabase.getInstance().getReference().child("Test_Stream_Uploads"); 
     mProgress = new ProgressDialog(this); 
//  mPostTitle = (EditText) findViewById(R.id.mPostTitle); 
     imagePostPreview = (ImageView) findViewById(R.id.imagePostPreview); 
     Intent intent = getIntent(); 

     mImageUri_gallery = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_gallery); 
     mImageUri_camera = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_camera); 

     txt_btn_post = (TextView) findViewById(R.id.txt_btn_post); 
     txt_btn_post.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startPosting(); 
      } 
     }); 


    } 

    private void startPosting() { 

     mProgress.setMessage("Bild wird hochgeladen..."); 
     mProgress.show(); 
     if (mImageUri_gallery != null) { 
      StorageReference filepath = mStorage.child("Stream_Image").child(mImageUri_gallery.getLastPathSegment()); 
      filepath.putFile(mImageUri_gallery).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
        Intent intent = new Intent(getBaseContext(), MainActivity.class); 
        DatabaseReference newPost = mDatabase.push(); 
        newPost.child("image").setValue(downloadUrl.toString()); 
        mProgress.dismiss(); 
        startActivity(intent); 
       } 
      }); 
     } 


    } 
} 

답변

0

나는 또한 적극적으로이 도구를 사용하고 있는데 실제로 코드에 실제로 들어 가지 않았지만 해제 할 수 있습니다. 나에게 그것이 어떻게 작동하는지 예를 들어 보자. 당신이 그것을 들여다 보면 당신은 쉽게 따라 잡고 아이디어를 얻을 수 있습니다. 갤러리에서 가져온 이미지에 적용됩니다. 방금 카메라에서 찍은 이미지에이를 적용 할 경우

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == GALLERY_REQUEST && resultCode == RESULT_OK){ 
     Uri imageUri = data.getData(); 
     CropImage.activity(imageUri) 
       .setGuidelines(CropImageView.Guidelines.ON) 
       .setAspectRatio(144,81) 
       .start(this); 
    } 
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
     CropImage.ActivityResult result = CropImage.getActivityResult(data); 
     if (resultCode == RESULT_OK) { 
      Uri resultUri = result.getUri(); 
      ib_image.setImageURI(resultUri); 
     } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
      Exception error = result.getError(); 
     } 
    } 
} 

, 당신은 그것을 조금 긴 방법 만이 안드로이드 문서 :(https://developer.android.com/training/camera/photobasics.html#TaskPhotoView)에 설명 된 것, 자신의 URI를 만들어야합니다 이에 대한 설명은 여기를 참조하십시오. Image capture with camera & upload to Firebase (Uri in onActivityResult() is null)

+0

고맙습니다! 나는 그것을 시험해보고, 그것이 나를 위해 일했는지 알려준다. – Ron

+0

@Ron이 효과가 있었습니까? –