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