web-dev-qa-db-ja.com

androidで画像を切り抜く

画像の切り抜きをしたいのですが、かなり便利なものが見つかりましたが、選択されていない領域を暗くするようなものがあるので、誰がどのように知っているのでしょうか?または正しい方向に私を導く?私が見つけたオンラインチュートリアルは、選択した領域を暗くすることを示していますが、私がそれを使用するとき、それはしません。英語を上手に使えなくてすみません。

使用しているチュートリアルへのリンク。

画像のトリミングチュートリアル1

Crop Image tutorial 2

このようなものにしたいです。

I want it be something like this

editButton.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent goEdit;
            goEdit = new Intent(PreviewActivity.this, CropImage.class);
            goEdit.putExtra("image-path", path);
            goEdit.putExtra("scale", true);
            goEdit.putExtra("fileName", nameFromPath);
            //finish();
            checkEdit = true;
            startActivityForResult(goEdit,0);

        }
});

[〜#〜] edit [〜#〜]このボタンリスナーを使用して、クラスCropImageアクティビティを呼び出すことにより、cropImageファイルを呼び出します。これは、内部の切り抜き機能ではなく、カスタムインテントですAndroid問題はどこに私を導くことができますか?ありがとうこれは私が使用しているライブラリです drioid4you crop image

31
user1235085

デフォルトのAndroidトリミング機能を使用できますか?

ここに私のコードがあります

private void performCrop(Uri picUri) {
    try {
        Intent cropIntent = new Intent("com.Android.camera.action.CROP");
        // indicate image type and Uri
        cropIntent.setDataAndType(picUri, "image/*");
        // set crop properties here
        cropIntent.putExtra("crop", true);
        // indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        // indicate output X and Y
        cropIntent.putExtra("outputX", 128);
        cropIntent.putExtra("outputY", 128);
        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, PIC_CROP);
    }
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        // display an error message
        String errorMessage = "Whoops - your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

宣言する:

final int PIC_CROP = 1;

上に。

OnActivity結果メソッドで、次のコードを記述します。

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

    if (requestCode == PIC_CROP) {
        if (data != null) {
            // get the returned data
            Bundle extras = data.getExtras();
            // get the cropped bitmap
            Bitmap selectedBitmap = extras.getParcelable("data");

            imgView.setImageBitmap(selectedBitmap);
        }
    }
}

実装は非常に簡単で、暗い部分も表示されます。

50
Akbari Dipali

このライブラリ: Android-Image-Cropper は、CropImagesに対して非常に強力です。現時点では、githubに3,731個の星があります。

数行のコードで画像をトリミングします。

1-buid.gradleに依存関係を追加します(モジュール:アプリ)

compile 'com.theartofdev.edmodo:Android-image-cropper:2.7.+'

2-AndroidManifest.xmlに権限を追加します

<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>

3-CropImageActivityをAndroidManifest.xmlに追加します

<activity Android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
 Android:theme="@style/Base.Theme.AppCompat"/>

4-要件に応じて、以下のいずれかのケースでアクティビティを開始します。

// start picker to get image for cropping and then use the image in cropping activity
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);

// start cropping activity for pre-acquired image saved on the device
CropImage.activity(imageUri)
.start(this);

// for fragment (DO NOT use `getActivity()`)
CropImage.activity()
.start(getContext(), this);

5-onActivityResultで結果を取得する

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
    CropImage.ActivityResult result = CropImage.getActivityResult(data);
    if (resultCode == RESULT_OK) {
      Uri resultUri = result.getUri();
    } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
      Exception error = result.getError();
    }
  }
}

アスペクト比またはシェイプをRECTANGLE、OVALなどに設定して、複数の カスタマイズ を実行できます。

4
Soon Santos

私は本当にクールなライブラリを見つけました。これを試してみてください。これは本当にスムーズで使いやすいです。

https://github.com/TakuSemba/CropMe

2
Taku Semba

お元気ですか。コードを使用して画像をトリミングできます。クラスを作成し、このクラスをXMlおよびJavaクラスに使用するだけです。 画像のトリミング 。選択した画像を円形に切り取り、正方形を多数のオプションに切り分けることができます。これがあなたにとって完全に管理可能であり、あなたに応じて変更できるためです。

あなたの仕事を楽しんでください:)

1
John smith