如何为所有设备获取图像路径Uri和Crop

时间:2012-07-05 10:06:13

标签: android android-layout android-intent android-library

我的主项目从某些来源获取图像(返回Uri)。下一步是裁剪图像(触摸输入)。我最近发现一些手机制造商搞砸了android基类,所以:

com.android.camera.action.crop 

并不总是存在。

所以我找到了一个可以裁剪的库:https://github.com/lvillani/android-cropimage 我已将库添加到我的eclipse构建路径和项目库中。

我的问题是,我可以像这样打开图书馆:

    Intent intent = new Intent("com.android.camera.action.CROP");  
    //intent.setClassName("com.android.camera", "com.android.camera.CropImage"); 
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("output", Uri); 
    intent.putExtra("outputFormat", "JPEG");
    startActivityForResult(intent, 1);  

然后检索裁剪后的图像还是我必须做额外的其他事情?

  1. 另一个问题:当我将它推向市场时,这也会影响我的应用程序(用户是否需要下载或接受额外库的许可?
  2. 我想确保我的应用程序适用于所有内容,这是最好的方法吗?或者有更好的方法,请解释。 (还要保持简单,相当新的Android开发!,谢谢!)

1 个答案:

答案 0 :(得分:4)

我安装了库并确保它链接到我的项目并且在构建路径中,然后我只是做了:

打开文件管理器:

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent,"Select Picture"), PICK_FROM_FILE);

或者,如果您想从相机中捕捉

        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, GET_IMAGE_FROM_CAMERA);

然后裁剪图片:

    Intent intent = new Intent(this, com.android.camera.CropImage.class);
    intent.setData(uri);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, CROP);

我已经在一些设备上对此进行了测试,它的工作正常且花花公子。也适用于相机。