简体   繁体   English

通过Android Gallery裁剪方法裁剪可绘制图像

[英]Crop a drawable image by android gallery cropping method

Onclick of my Imageview,I want to crop the background image of the imageview which is in drawable folder of my app by default cropping technique of android gallery and the cropped image should set in same once it is cropped. 我的Imageview的onclick,我想通过android gallery的默认裁剪技术来裁剪位于我的应用程序可绘制文件夹中的imageview的背景图像,并且裁剪后的图像应设置在相同的位置。

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    final Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(Uri.parse("android.resource://com.example.croppingactivity/drawable/apple"), "image/*");
    intent.putExtra("outputX", 400);
    intent.putExtra("outputY", 400);
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("scale", true);
    intent.putExtra("crop", true);
    //intent.putExtra("output", Uri.parse("android.resource://com.example.croppingactivity/drawable/apple"));
    startActivityForResult(intent, 1);
}

and this is my stacktrace. 这是我的堆栈跟踪。

12-04 10:21:28.812: E/AndroidRuntime(2553): FATAL EXCEPTION: main
12-04 10:21:28.812: E/AndroidRuntime(2553): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT dat=android.resource://com.example.croppingactivity2130837504 typ=image/* (has extras) }
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.app.Activity.startActivityForResult(Activity.java:3370)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.app.Activity.startActivityForResult(Activity.java:3331)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at com.example.croppingactivity.MainActivity$1.onClick(MainActivity.java:52)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.view.View.performClick(View.java:4202)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.view.View$PerformClick.run(View.java:17340)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.os.Handler.handleCallback(Handler.java:725)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.os.Handler.dispatchMessage(Handler.java:92)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.os.Looper.loop(Looper.java:137)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at android.app.ActivityThread.main(ActivityThread.java:5039)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at java.lang.reflect.Method.invoke(Method.java:511)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-04 10:21:28.812: E/AndroidRuntime(2553):     at dalvik.system.NativeStart.main(Native Method)

but it doesn't work.I am getting activity not found Exception. 但它不起作用。我正在获取未找到活动的异常。 What I am doing wrong please help me. 我做错了,请帮帮我。

Well, this is the code I'm using to do such thing. 好吧,这是我用来执行此操作的代码。 Maybe you can try it : 也许您可以尝试一下:

final Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");

intent.putExtra("crop", "true");

intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);

intent.putExtra("outputX", 400);
intent.putExtra("outputY", 400);
// Scale the image down to 400 x 400
intent.putExtra("scale", true);

intent.putExtra("windowTitle", "My_title");
    // You need to use a temporary file for cropping to work
    File tempFile = File.createTempFile("crop", "png",
              myActivity.getCacheDir());
mSavedUri = Uri.fromFile(tempFile);
intent.putExtra("output", mSavedUri);
intent.putExtra("outputFormat", "PNG");

profileActivity.startActivityForResult(intent, INTENT_PICK_PICTURE);

I guess you'll have to change intent.setType(...) to intent.setDataAndType(Uri.parse("android.resource://..."), "image/*") 我想您必须将intent.setType(...)更改为intent.setDataAndType(Uri.parse("android.resource://..."), "image/*")

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

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