获取图像Uri +在Android中用相机拍摄的照片的缩略图

时间:2011-08-31 13:27:14

标签: android camera uri photo

我想用我使用内置Android相机拍摄的照片更新ImageView。 我使用以下代码:

void getPhoto() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, TAKE_PICTURE);
    }

之后我获得了照片:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == TAKE_PICTURE) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            ImageView photoView = (ImageView) findViewById(R.id.photoId);
            photoView.setImageBitmap(photo);
            }
        }

但是使用这个代码无论我做什么我只得到我拍摄的照片的缩略图 - 我的问题是如何才能获得刚拍摄的照片的Uri,以便不使用缩略图而是使用原始图像?

聚苯乙烯。我实际上需要照片的缩略图,但我也需要原始照片的Uri。

1 个答案:

答案 0 :(得分:4)

我将自己的URI放在意图告诉它保存的位置,然后你知道它在哪里,不确定还有其他方法。 为您的文件创建一些字段。

private String imagePath = "/sdcard/Camera/test.jpg";
private File originalFile;

然后初始化文件。

originalFile = new File(imagePath);

现在启动具有意图的Camera应用程序,将URI作为额外的传递。

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri outputFileUri = Uri.fromFile(originalFile);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, RESULT_CAPTURE_IMAGE); 

在onActivityResult()中提取URI

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == RESULT_CAPTURE_IMAGE && resultCode == Activity.RESULT_OK) {
        mBitmap = BitmapFactory.decodeFile(originalImagePath, BitmapFactoryOptions);  //set whatever bitmap options you need.

因此,您现在可以使用createBitmap构建位图,或者根据需要使用文件路径