繁体   English   中英

从相机拍摄照片并裁剪

[英]Take Picture from camera and crop it

我试图用相机拍摄一张照片,然后裁剪。 为此,请使用以下代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == PICK_FROM_CAMERA && resultCode == Activity.RESULT_OK)
    {
        Bundle extras = data.getExtras();
        if (extras != null) 
        {
            Bitmap photo = extras.getParcelable("data");
            //iv.setImageBitmap(photo);
        }
    }
}

public void ImageClicked(View v)
{   
    // call android default camera
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, PICK_FROM_CAMERA);

    // ******** code for crop image
    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 (ActivityNotFoundException e) 
    {
        // Do nothing for now
    }
}

我可以完美地拍摄照片,但是之后我的应用程序因以下错误而崩溃:“不幸的是Galerie已停止”。 我的清单看起来像这样:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

这是我的错误中的CatLog:

05-18 01:55:00.580: E/caladbolg(180): 3118424938 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.620: E/caladbolg(180): 3118460460 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.650: E/caladbolg(180): 3118491924 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.680: E/caladbolg(180): 3118525585 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.720: E/caladbolg(180): 3118559429 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.750: E/caladbolg(180): 3118592937 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.783: E/caladbolg(180): 3118626598 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.820: E/caladbolg(180): 3118660320 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.850: E/caladbolg(180): 3118694469 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:00.890: E/caladbolg(180): 3118727642 cald_hal_qct.c                   (15716) 25052 E [HCF] Not found unlocked buffer.
05-18 01:55:10.950: E/AudioHardware7x30(180): updateDeviceInfo: E rx_device 2 and tx_device 3
05-18 01:55:10.950: E/AudioHardware7x30(180): updateDeviceInfo: X cur_rx 2 cur_tx 3
05-18 01:55:11.630: E/AndroidRuntime(24928): FATAL EXCEPTION: main
05-18 01:55:11.630: E/AndroidRuntime(24928): java.lang.IllegalStateException: Could not execute method of the activity
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.view.View$1.onClick(View.java:3591)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.view.View.performClick(View.java:4084)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.view.View$PerformClick.run(View.java:16966)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.os.Handler.handleCallback(Handler.java:615)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.os.Looper.loop(Looper.java:137)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.app.ActivityThread.main(ActivityThread.java:4931)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at java.lang.reflect.Method.invokeNative(Native Method)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at java.lang.reflect.Method.invoke(Method.java:511)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at dalvik.system.NativeStart.main(Native Method)
05-18 01:55:11.630: E/AndroidRuntime(24928): Caused by: java.lang.reflect.InvocationTargetException
05-18 01:55:11.630: E/AndroidRuntime(24928):    at java.lang.reflect.Method.invokeNative(Native Method)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at java.lang.reflect.Method.invoke(Method.java:511)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.view.View$1.onClick(View.java:3586)
05-18 01:55:11.630: E/AndroidRuntime(24928):    ... 11 more
05-18 01:55:11.630: E/AndroidRuntime(24928): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.camera.action.CROP dat=file:///data/data/com.android.gallery3d/files/crop-temp (has extras) }
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.app.Activity.startActivityForResult(Activity.java:3351)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at android.app.Activity.startActivityForResult(Activity.java:3312)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at com.android.camera.Camera.doAttach(Camera.java:1442)
05-18 01:55:11.630: E/AndroidRuntime(24928):    at com.android.camera.Camera.onReviewDoneClicked(Camera.java:1362)
05-18 01:55:11.630: E/AndroidRuntime(24928):    ... 14 more
05-18 01:55:29.900: E/RadioFeedRequest(24881): Invalid value for content filter: 1

我的问题在哪里? 我必须改变什么?

而不是您的代码...

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, PICK_FROM_CAMERA);

// ******** code for crop image
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);

使用此代码对我来说很好.....

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, CAMERA_REQUEST);
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("outputX", 100);
    intent.putExtra("outputY", 100);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM