Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在相机后自动裁剪_Android_Image_Camera - Fatal编程技术网

Android 如何在相机后自动裁剪

Android 如何在相机后自动裁剪,android,image,camera,Android,Image,Camera,我想从相机拍一张照片,然后在拍摄完图像后进行自动裁剪。有源代码的例子吗?我觉得很难找到这个例子 这不是一个简单的答案,因为它需要花费相当多的时间和学习,以获得您想要的启动和运行。我建议大家研究一下OpenCv——它是一个非常强大的工具,可以做比裁剪更多的图像处理,但是像裁剪这样的事情可以很容易地完成 显示了使用OpenCv自动裁剪框架艺术的示例。这将是一个很好的参考,看看你的项目,因为你想要的作物是矩形的,有一个标准的形状。如果不是这样的话,那么您需要深入研究检测要裁剪的特定对象的图像处理技术。

我想从相机拍一张照片,然后在拍摄完图像后进行自动裁剪。有源代码的例子吗?我觉得很难找到这个例子

这不是一个简单的答案,因为它需要花费相当多的时间和学习,以获得您想要的启动和运行。我建议大家研究一下OpenCv——它是一个非常强大的工具,可以做比裁剪更多的图像处理,但是像裁剪这样的事情可以很容易地完成

显示了使用OpenCv自动裁剪框架艺术的示例。这将是一个很好的参考,看看你的项目,因为你想要的作物是矩形的,有一个标准的形状。如果不是这样的话,那么您需要深入研究检测要裁剪的特定对象的图像处理技术。有更多的在线资源,包括这里的StackExchange,用于学习OpenCv

另外,对于学习如何在Android上实现OpenCv也有一些很好的参考


祝你好运

我建议您使用此库,它为您提供了大量的裁剪选择形状、大小等,它还让你可以选择拍摄新照片或使用画廊中的照片

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

}

我会先试用它当然,我在3个以上的应用程序上使用它,它的效果非常好: