我对此描述感到有些困惑:
调用者可以传递额外的EXTRA_OUTPUT来控制此图像的位置 将写。如果EXTRA_OUTPUT不存在,则小 size图像作为额外字段中的Bitmap对象返回。这是 适用于只需要小图像的应用程序。如果 存在EXTRA_OUTPUT,然后将写入全尺寸图像 EXTRA_OUTPUT的Uri值。
如果没有EXTRA_OUTPUT
,它将返回“小尺寸图像”?
使用EXTRA_OUTPUT
,它会返回完整尺寸的图片吗?
“在额外字段中作为Bitmap对象返回”...
在我的onActivityResult
上,我只是使用Intent data
作为实际数据。我应该使用data.getExtra
还是其他什么?
答案 0 :(得分:3)
如果您提供Uri:
Intent action = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
action.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, myUri);
startActivityForResult(action, CAMERA_RESULT);
然后使用(在requestCode和resultCode上测试之后)检索它:
Bitmap bitmap = BitmapFactory.decodeFile(myUri, options);
在另一种情况下:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_RESULT);
并使用以下方法检索它:
Bundle bundle = intent.getExtras();
Bitmap bitmap = (Bitmap) extras.get("data");
答案 1 :(得分:2)
以下是我评论的扩展。这段代码在给我像素数据方面效果很好 - 获得灰度数据和imageview是in my post here
@Override
public void onClick(View v) {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
final ContentResolver cr = getContentResolver();
final String[] p1 = new String[] {
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATE_TAKEN
};
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");
if ( c1.moveToFirst() ) {
String uristringpic = "content://media/external/images/media/" +c1.getInt(0);
Uri uri = Uri.parse(uristringpic);
try {
Bitmap bm = android.provider.MediaStore.Images.Media.getBitmap(cr, uri);
希望这有帮助