android中的裁剪图像

android中的裁剪图像,android,image,android-crop,Android,Image,Android Crop,我想做的图像裁剪我发现了一些非常有用的,但不知怎的是像缺乏黑暗的未选定的地区,所以我想知道有人知道如何?还是把我引向正确的方向?我找到的在线教程显示,它会使选定区域变暗,但当我使用它时,它不会变暗。请帮助我,非常感谢,很抱歉我的英语水平不好 链接到我使用的教程 我希望是这样的 editButton.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(Vi

我想做的图像裁剪我发现了一些非常有用的,但不知怎的是像缺乏黑暗的未选定的地区,所以我想知道有人知道如何?还是把我引向正确的方向?我找到的在线教程显示,它会使选定区域变暗,但当我使用它时,它不会变暗。请帮助我,非常感谢,很抱歉我的英语水平不好

链接到我使用的教程

我希望是这样的

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);

        }
});

编辑 我使用这个按钮侦听器通过调用类cropImage活动来调用cropImage文件。这是一个定制的目的,不是android内部的裁剪功能,但我认为是它的副本,因此它支持所有版本,但当我调用它时,所选区域不会变亮,我不知道问题出在哪里,有人能指导我吗?谢谢
这是我正在使用的库

您可以使用默认的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);
        }
    }
}
这对我来说很容易实现,而且还显示了暗区。

希望你做得很好。 您可以使用我的代码裁剪图像。您只需创建一个类并将该类用于
XMl
java
类。 . 您可以将选定的图像裁剪成圆形,将其裁剪成方形,然后再裁剪成许多选项。 完全希望它能为你工作。因为这对你来说是完全可以管理的,你可以根据自己的情况改变它


享受你的工作:)

我发现了一个非常酷的库,试试这个。 这是非常顺利和易于使用

此库对CropImages非常强大。目前,它在github上拥有3731颗星星

您将使用几行代码裁剪图像

1-将依赖项添加到buid.gradle(模块:应用程序)

2-将权限添加到AndroidManifest.xml中

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
 android:theme="@style/Base.Theme.AppCompat"/>
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();
    }
  }
}

你可以做几个,如设置纵横比或形状为矩形,椭圆形和更多

请你把你试过的密码贴出来好吗?另外,描述一下当你尝试时会发生什么?您是否收到任何类型的错误消息?我的意思是,我没有收到任何错误消息,我只是不知道如何使选定区域变亮,使未选定区域变暗,以显示差异检查[此问题][1]我在那里建议的替代库。[1] :请正确声明如何使用手动裁剪视图…检查此堆栈溢出回答:您好,我尝试了您的代码,但它仍然没有在我的手机上显示变暗区域:(我想知道这是否是因为我的清单?还是手机版本?您使用的是哪个版本?@domji84您在清单文件中设置了吗?在我的情况下,
data.getExtras()
返回
null
,那么如何获取
位图
?。我面临一个问题,在裁剪后,我的uri从“file:///”开始,但我希望“content://”在获取字符串路径时崩溃。在Cropus命令后如何保存图像:
mImageProfile.setImageBitmap(result.getBitmap());
返回一个空白图像,我的意思是图像不可见。但是使用命令:
mImageProfile.setImageURI(result.getUri());
工作正常。您也可以从
CustomAdapter
启动它,方法是使用以下命令:
CropImage.activity().setGuidelines(CropImageView.Guidelines.ON)。启动((appcompativity)上下文)
我在realme 3 pro中使用这个库,它有android 10,但没有显示gallery的选项,它只显示摄像头的选项,但是这个gallery选项在nexus 5x和realme U1中可见,它们有android 9。有什么建议吗?你真的创建了这个库。这没什么错,但至少不要尝试误导人们认为你找到了它,或者考虑把它放在一个免责声明中。这个库没有正确的用法用法,而代码<>片段< /代码>。而且,作者对问题没有很好的回答。你的主旨不包括<代码> R.Stabelaby.<代码>,所以很难让它工作,尤其是对于字符串属性。
// 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);
@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();
    }
  }
}