Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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_Crop - Fatal编程技术网

从相机裁剪图像(android)

从相机裁剪图像(android),android,image,crop,Android,Image,Crop,对不起我的英语。我想使用相机和裁剪图像。但有错误: Caused by: java.lang.NullPointerException at com.bottom.smart.cropimage.MainActivity.onActivityResult(MainActivity.java:87) at android.app.Activity.dispatchActivityResult(Activity.java:4663)

对不起我的英语。我想使用相机和裁剪图像。但有错误:

Caused by: java.lang.NullPointerException
            at com.bottom.smart.cropimage.MainActivity.onActivityResult(MainActivity.java:87)
            at android.app.Activity.dispatchActivityResult(Activity.java:4663)
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3131)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3178)
            at android.app.ActivityThread.access$1100(ActivityThread.java:134)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:4624)
            at java.lang.reflect.Method.invokeNative(Native Method)
第87行:位图照片=extras.getParcelabledata

我想这样做:点击按钮,打开相机,拍照,裁剪这个图像,并在mainActivity中输出裁剪图像。大声说出我的密码

我的代码:

 private static final int PICK_FROM_CAMERA = 1;

    ImageView imgview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgview = (ImageView) findViewById(R.id.imageView1);
        Button buttonCamera = (Button) findViewById(R.id.btn_take_camera);

        buttonCamera.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                intent.putExtra(MediaStore.EXTRA_OUTPUT,
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());

                intent.putExtra("crop", "true");
                intent.putExtra("aspectX", 0);
                intent.putExtra("aspectY", 0);
                intent.putExtra("outputX", 200);
                intent.putExtra("outputY", 150);

                try {

                    intent.putExtra("return-data", true);
                    startActivityForResult(intent, PICK_FROM_CAMERA);

                } catch (Exception e) {
                    Log.e("error", e.toString());

                }
            }
        });

    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == PICK_FROM_CAMERA) {
            Bundle extras = data.getExtras();
            if (data != null && data.getExtras() !=null) {
                Bitmap photo = extras.getParcelable("data");
                imgview.setImageBitmap(photo);

            }
        }


    }
}

我做过这样的事

Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
SaveImageTask.SaveImageListener saveCameraImageListener = new SaveImageTask
                        .SaveImageListener() {
                    @Override
                    public void onImageSaved(String filePath) {
                        Uri uri = Uri.fromFile(new File(filePath));
                        beginCrop(uri);
                    }
                };

SaveImageTask saveTask = new SaveImageTask(saveCameraImageListener);
                saveTask.execute(cameraBitmap);

private void beginCrop(Uri source) {
    Uri outputUri = Uri.fromFile(new File(getCacheDir(), "cropped" + System.currentTimeMillis
            ()));
    new Crop(source).output(outputUri).asSquare().start(this);
}

使用此位图yourImage=Bitmap data.getExtras.getdata@kishorejethava感谢您的回答,现在我在Bundle extras=data.getExtras中出现了空指针异常;您应该移动`Bundle extras=data.getExtras;`在if块中检查数据是否不为null。这可能无法解决您的问题,但您已经排除了异常。您确定数据实际上是正确的密钥吗?