2011-08-31 97 views
6

我想使用内置Android相机拍摄的照片更新ImageView。 我使用下面的代码:获取图片Uri +在Android中使用相机拍摄的照片的缩略图

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,而不是与缩略图一起工作,而是与原始图像一起工作?

Ps。我其实需要照片的缩略图,但我也需要原始照片的Uri。

回答

4

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

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

然后初始化该文件。

originalFile = new File(imagePath); 

现在启动相机应用程序的意图,作为额外的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建立一个位图或使用任何你需要

+3

文件路径此外,它不是好的做法进行硬编码使用/ sdcard /的uri,你应该使用getter作为环境变量。 –

+0

但数据意图为空,您无法检索缩略图。你可以从全尺寸照片创建它 –

相关问题