画像の切り抜きをしたいのですが、かなり便利なものが見つかりましたが、選択されていない領域を暗くするようなものがあるので、誰がどのように知っているのでしょうか?または正しい方向に私を導く?私が見つけたオンラインチュートリアルは、選択した領域を暗くすることを示していますが、私がそれを使用するとき、それはしません。英語を上手に使えなくてすみません。
使用しているチュートリアルへのリンク。
このようなものにしたいです。
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
デフォルトの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);
}
}
}
実装は非常に簡単で、暗い部分も表示されます。
このライブラリ: 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などに設定して、複数の カスタマイズ を実行できます。
私は本当にクールなライブラリを見つけました。これを試してみてください。これは本当にスムーズで使いやすいです。
お元気ですか。コードを使用して画像をトリミングできます。クラスを作成し、このクラスをXMl
およびJava
クラスに使用するだけです。 画像のトリミング 。選択した画像を円形に切り取り、正方形を多数のオプションに切り分けることができます。これがあなたにとって完全に管理可能であり、あなたに応じて変更できるためです。
あなたの仕事を楽しんでください:)