繁体   English   中英

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

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

我的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);
}

这是我的堆栈跟踪。

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)

但它不起作用。我正在获取未找到活动的异常。 我做错了,请帮帮我。

好吧,这是我用来执行此操作的代码。 也许您可以尝试一下:

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

我想您必须将intent.setType(...)更改为intent.setDataAndType(Uri.parse("android.resource://..."), "image/*")

暂无
暂无

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

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