我想裁剪图像我发现了一些非常有用的图像,但不知何故就像是缺乏使未选区域变暗所以我想知道有谁知道如何?还是引导我走向正确的方向?我发现的在线教程显示会使所选区域变暗,但是当我使用它时,它不会。请帮助我多多感谢,抱歉我的英语不好。
指向我使用的教程的链接。
我希望它是这样的。
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内部的裁剪功能,但我认为是它的副本,以便它支持所有版本,但当我调用它时,所选区域不亮,我不知道问题可以在哪里引导我?谢谢 这是我正在使用的库drioid4you crop image
答案 0 :(得分:48)
你能使用默认的android Crop功能吗?
这是我的代码
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);
}
}
}
我很容易实现并且还显示出变暗的区域。
答案 1 :(得分:4)
此库: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();
}
}
}
您可以执行多个customizations,将“纵横比”或形状设置为“矩形”,“椭圆形”等等。
答案 2 :(得分:2)
我找到了一个非常酷的图书馆,试试这个。 这非常流畅且易于使用。
答案 3 :(得分:1)
XMl
和java
类。
Crop image。
您可以将选定的图像裁剪为圆形,并将其放入多个选项中。
希望它完全适合你。因为这对你来说是完全可以控制的,你可以根据你改变它。
享受你的工作:)