0

我的相机 Intent 有问题。它将图片保存到存储中,但不会将文件路径返回给我的活动。当我删除 EXTRA_OUTPUT 时,它会返回文件路径,但是图像的尺寸非常小。是否有任何解决方案可以在不使用 EXTRA_OUTPUT 的情况下获取原始尺寸的图片?

这是我的代码:

   public void onClick(View arg0) {
    switch (arg0.getId()) {     
     case R.id.btnImageCapture:
       preinsertedUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, preinsertedUri);
         startActivityForResult(intent, OPEN_CAMERA);
       break;
       }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     switch(requestCode){
     case OPEN_CAMERA:
         if (resultCode == RESULT_OK && data != null) {
                  Uri imageUri = null;
                  imageUri = data.getData();
                 if(imageUri == null && preinsertedUri != null){
                  imageUri = preinsertedUri;
                 }
                  String[] filePathColumn = { MediaStore.Images.Media.DATA };
                  Cursor cursor = getContentResolver().query(imageUri, filePathColumn, null, null, null);
                  int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                  cursor.moveToFirst();
                  filePath = cursor.getString(columnIndex);
                try {
                 Bitmap photo = (Bitmap) data.getExtras().get("data");
                 ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                 photo.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                         File f = new File(filePath);
                         f.createNewFile();
                         FileOutputStream fo = new FileOutputStream(f);
                         fo.write(bytes.toByteArray());
                         fo.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                 break;
          } 
       }
    }
4

1 回答 1

0

试试这个可能对你有帮助。

当我从相机捕捉照片时,我使用光标实现逻辑并迭代光标并获取从相机捕捉的最后一张照片路径。

它给出了从相机拍摄的最后一张照片的路径。

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE);

Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, new String[]{Media.DATA, Media.DATE_ADDED, MediaStore.Images.ImageColumns.ORIENTATION}, Media.DATE_ADDED, null, "date_added ASC");
if(cursor != null && cursor.moveToFirst())
{
    do {
        uri = Uri.parse(cursor.getString(cursor.getColumnIndex(Media.DATA)));
        photoPath = uri.toString();
    }while(cursor.moveToNext());
    cursor.close();
}
于 2013-02-24T10:46:02.810 回答