1

image(私がギャラリーから選択したもの、またはカメラから撮影したもの)を切り取り、それを渡そうとしています別のactivityに送信してください。imageをfirebase storageにアップロードする必要があります。Image-Uriを受信アクティビティに送信しない(Android-Image-Cropper)

最初(画像の切り抜きなし)はすべてうまくいった。私は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(); 
     } 
    } 
} 

あなたはあなただけのカメラから取った画像にこれを適用する場合は、あなたがあなた自身のURIを作成する必要があります、それは)少し長い道のりだが、それはAndroidのドキュメント:(https://developer.android.com/training/camera/photobasics.html#TaskPhotoViewで説明しています、これについてはここで説明しました:Image capture with camera & upload to Firebase (Uri in onActivityResult() is null)

+0

ありがとうございました!私はそれを試してみて、それが私のために働いたかどうかを知らせてください – Ron

+0

@Ronそれは働いたのですか? –

関連する問題