[英]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.