2016-08-04 9 views
0

私たちはFacebookでやっているように画像をトリミングしようとしています。私は私のアプリでこのリンクを使用しました:https://github.com/oginotihiro/cropviewこれは私のためにうまくいきます。しかし、私がボタンをクリックすると、直接そのギャラリーに行き、選択した画像をトリミングします。イメージと私は切り抜きをしたいと思います。私はこれをどうやってできますか?誰かが私を助けることができますか?カメラから画像をキャプチャし、アンドロイドで固定クロッピングを実行します

私はこのコードを試しましたが、私は実装できません。ギャラリー

Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(i, RESULT_LOAD_IMAGE); 

ステップ2を開くために起動します:ギャラリーから画像を取得:

imageBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       reset(); 
       Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(intent, REQUEST_PICK); 

      } 
     }); 

    doneBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       final ProgressDialog dialog = ProgressDialog.show(StudentDetails.this, null, "Please wait…", true, false); 
       cropView.setVisibility(View.GONE); 
       layout4.setVisibility(View.GONE); 
       resultIv.setVisibility(View.VISIBLE); 
       layout3.setVisibility(View.GONE); 
       layoutUpload.setVisibility(View.VISIBLE); 
       //  editTextName.setVisibility(View.GONE); 
       buttonUpload.setVisibility(View.VISIBLE); 

       new Thread() { 
        public void run() { 
         croppedBitmap = cropView.getOutput(); 

         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           // cropped image set 
           resultIv.setImageBitmap(croppedBitmap); 
          } 
         }); 

         Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped")); 
         CropUtil.saveOutput(StudentDetails.this, destination, croppedBitmap, 1); 

         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           dialog.dismiss(); 
          } 
         }); 
        } 
       }.start(); 
      } 
     }); 

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

     if (resultCode == RESULT_OK && requestCode == REQUEST_PICK) { 
      filePath = data.getData();   
      cropView.setVisibility(View.VISIBLE); 
      layoutImage.setVisibility(View.VISIBLE); 
      layout3.setVisibility(View.GONE); 
      layout4.setVisibility(View.VISIBLE); 
      textNameVal.setVisibility(View.GONE); 
      text1.setVisibility(View.GONE); 
      buttonUpload.setVisibility(View.GONE); 

      int x=(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); 
      int y=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());   
      cropView.of(filePath).withAspect(x,y).initialize(StudentDetails.this); 
     } 
     } 
+0

を追加します。私はアンドロイドには新しいので、これを行うには考えが得られていない。 – Amshu

答えて

0

ステップ1あなたのケースでは

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imageView = (ImageView) findViewById(R.id.imgView); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
     } 
    } 

を、あなたはonActivityResultメソッドで切り抜くことができます。 それはあなたを助けるでしょう。カメラ付き

+0

返信いただきありがとうございます。私はこのコードを試しました。しかし、カメラから写真をキャプチャしたいと思います。これはギャラリーから選択したものと同じです。私はACTION_IMAGE_CAPTUREをインテントで使用したいと思います。 – Amshu

0

: ステップ1:オープンカメラ

/* 
* Capturing Camera Image will lauch camera app requrest image capture 
*/ 
private void captureImage() { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 

    // start the image capture Intent 
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE); 
} 

ステップ2:カメラから画像を取得します。

/** 
* Receiving activity result method will be called after closing the camera 
* */ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // if the result is capturing Image 
    if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      // successfully captured the image 
      // display it in image view 
      previewCapturedImage(); 
     } else if (resultCode == RESULT_CANCELED) { 
      // user cancelled Image capture 
      Toast.makeText(getApplicationContext(), 
        "User cancelled image capture", Toast.LENGTH_SHORT) 
        .show(); 
     } else { 
      // failed to capture image 
      Toast.makeText(getApplicationContext(), 
        "Sorry! Failed to capture image", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 
} 

ステップ3:このためのすべてのソリューションがあります許可

<!-- Accessing camera hardware --> 
    <uses-feature android:name="android.hardware.camera" /> 
+0

ここでは私の質問 – Amshu

+1

のリンクのようにここでトリミングオプションを実装する必要がありますメソッドを記述し、previewCapturedImage()メソッドを置き換えることができます。受け取るデータはBitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath()、 options)です。 – sonnv1368

+0

ここにオプションはありますか? – Amshu

関連する問題