【问题标题】:how to get real path image from sdcard after cropping?裁剪后如何从 sdcard 获取真实路径图像?
【发布时间】:2016-11-19 09:42:28
【问题描述】:

我的项目有问题。我想将裁剪的图像传递给其他活动。我已经完成了我的裁剪方法,但我无法获得它的真实路径。我之前搜索过如何获取路径,但我发现的所有方法都不起作用。它总是给我空路径。所以如果你们能帮助我,请回答我的问题.. 这是我的代码

   public class MainActivity extends AppCompatActivity {
    Button btn;
    ImageView imgView;
    private Uri mImageCaptureUri;
    String realPath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);
        imgView = (ImageView) findViewById(R.id.imageView);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                i.putExtra("crop","true");
                i.putExtra("aspectX", 1);
                i.putExtra("aspectY", 1);
                i.putExtra("outputX", 200);
                i.putExtra("outputY", 200);
                i.putExtra("return-data", true);
                startActivityForResult(i,2);

            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 2 && resultCode == RESULT_OK && data != null){
            Uri uri = data.getData();
            String type = data.getType();
            Log.i("TAG", "Pick completed: " + uri + " " + type);
            if (uri != null)
            {
                String path = uri.toString();
                if (path.toLowerCase().startsWith("file://"))
                {
                    // Selected file/directory path is below
                    path = (new File(URI.create(path))).getAbsolutePath();
                    Log.e("ini", path);
                }

            }

            Bundle extras = data.getExtras();
            Bitmap img = extras.getParcelable("data");
            imgView.setImageBitmap(img);
        }


    }

如果我得到了真实路径,我可以使用意图传递路径并将其应用于下一个图像视图。我需要的只是路径。谢谢

【问题讨论】:

  • 将 uri 传递给其他活动。
  • String path = uri.toString();。那为什么还不够好?请说出那条路的样子。还要告诉 uri.getPath() 提供什么。
  • 应该是图片的绝对路径。但在我的项目中,Uri uri = data.getData();一片空白。因此,分支过程 if(uri != null) 永远不会完成。
  • 直到现在你还没有告诉Bitmap img =。
  • Bitmap img = extas.getparcelable("data") 该代码将裁剪后的图像应用于位图。

标签: java android uri crop absolute-path


【解决方案1】:

数据 extraBundle 中存在源 URI。

Bundle extras = data.getExtras();
Bitmap img = extras.getParcelable("data");
imgView.setImageBitmap(img);

Uri selectedImageUri = Uri.parse(extras.get("src_uri").toString());
String realPath = getRealPathFromURI(selectedImageUri);


public String getRealPathFromURI(Uri uri) {

    String[] projection = { MediaStore.Images.Media.DATA };

    @SuppressWarnings("deprecation")
    Cursor cursor = managedQuery(uri, projection, null, null, null);

    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

    cursor.moveToFirst();
    return cursor.getString(column_index);
}

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多