我想用相机拍摄一张照片,然后在捕获图像后自动裁剪。是否有源代码示例?我很难找到例子
答案 0 :(得分:0)
我建议您使用此库Android-Image-Cropper by ArthurHub,它为您提供了很多裁剪选择(形状,大小,.....),并且还为您提供了拍摄新照片或使用其中一个的选择。画廊
int myColor;
if(Build.VERSION.SDK_INT >= 21){
myColor = ContextCompat.getColor(this, R.color.white);
}
else{
myColor=getResources().getColor(R.color.white);
}
CropImage.activity()
.setActivityMenuIconColor(myColor)
.setAllowRotation(true)
.setFixAspectRatio(true)
.setAspectRatio(3, 2)
.setCropShape(CropImageView.CropShape.RECTANGLE)
.setActivityTitle("Selection d'image")
.start(this);
您必须处理结果:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode== CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE){
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), resultUri);
String string = resultUri.toString();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, baos);
} catch (IOException e) {
e.printStackTrace();
}
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
答案 1 :(得分:-1)
这不是一个简单的答案,因为这将花费大量时间并学会获取所需的内容并开始运行。我建议研究一下OpenCv-这是一个非常强大的工具,不仅可以裁剪,而且可以加载更多的图像处理,但是可以很容易地进行裁剪。
This link显示了使用OpenCv自动裁剪框架艺术品的示例。查看您的项目将是一个很好的参考,因为您要裁剪的对象是矩形且具有标准形状。如果不是这种情况,那么您将需要更深入地研究检测您想要裁剪的特定对象的图像处理技术。在线上有许多资源(包括StackExchange上的资源)可用于学习OpenCv。
此外,this post对于学习如何在Android上实现OpenCv也有一些很好的参考。
祝你好运!