使用ACTION_IMAGE_CAPTURE时返回什么数据?

3
我有点被这个描述搞糊涂了:
调用者可以传递一个额外的 EXTRA_OUTPUT 来控制图片写入到哪里。如果没有提供 EXTRA_OUTPUT,则会将一张小尺寸的图像作为 Bitmap 对象返回到额外字段中。这对于只需要小图片的应用程序非常有用。如果提供了 EXTRA_OUTPUT,那么完整大小的图像将被写入 EXTRA_OUTPUT 的 Uri 值中。
如果没有 EXTRA_OUTPUT,它会返回“小尺寸图像”吗?
如果有 EXTRA_OUTPUT,它会返回完整大小的图像吗?
“作为 Bitmap 对象在额外字段中返回”...
在我的 onActivityResult 中,我只是使用 Intent data 作为实际数据。我应该使用 data.getExtra 或类似的东西吗?

+1 因为这个定义对我来说也从未清晰过。然而,我没有使用 extra_output 行,而是使用内容解析器,因为我只需要像素数据。 - user2517252
你能详细说明一下吗?我也只需要像素数据。 - EGHDK
很高兴,我已经扩展了这个答案。 - user2517252
2个回答

4

如果您提供了一个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"); 

2

这里是我评论的扩展。这段代码对我非常有效,它为我提供了像素数据 - 获取灰度数据和图像视图在我的帖子中

@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);

希望这可以帮助到您。

@EGHDK 非常感谢。我很高兴听到这个好消息,找到了一种获取像素数据的不错方法。 - user2517252
@EGHDK,您需要额外的帮助吗? - user2517252
不好意思!谢谢您的努力。 - EGHDK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接