【问题标题】:How to get a high resolution image如何获得高分辨率图像
【发布时间】:2017-12-21 20:06:32
【问题描述】:

我的问题是,当我从相机拍照并传递给另一个活动时。图像不是高分辨率。我怎样才能使我的图像具有高分辨率。我的代码如下

主要活动

    Button btn_cam = (Button) findViewById(R.id.btn_cam);
    btn_cam.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            MainActivity.this.startActivityForResult(intent, CAMERA_PIC_REQUEST);

        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {

        Bitmap image = (Bitmap) data.getExtras().get("data");
        Intent cam = new Intent(this, MainCam.class);
        cam.putExtra("flostic", image);
        startActivity(cam);

第二个活动

            Intent intent = getIntent();
            imageBitmap = (Bitmap) intent.getParcelableExtra("flostic");

【问题讨论】:

  • 您没有使用 EXTRA_OUTPUT,文档说:“如果 EXTRA_OUTPUT 不存在,则在额外字段中将小尺寸图像作为 Bitmap 对象返回”
  • 但实际上你已经问过同样的问题 3 次了:每次你被告知要使用EXTRA_OUTPUT,那么你想一次又一次地重复这个问题多少次?
  • 是的。但只有 Bitmap 对象可以在我的应用程序中运行
  • 我不明白你的意思

标签: android bitmap android-camera high-resolution


【解决方案1】:

在意图中添加MediaStore.EXTRA_OUTPUT,并在putExtra中给出路径以指定保存图片的路径,否则它只返回一张图片而不是高分辨率图片。请参考此doc

可以发送标准Intent 操作以使相机应用程序捕获图像并将其返回。调用者可能会传递一个额外的EXTRA_OUTPUT 来控制此图像的写入位置。如果 EXTRA_OUTPUT 不存在,则在额外字段中将小尺寸图像作为位图对象返回。这对于只需要小图像的应用程序很有用。如果存在EXTRA_OUTPUT,则将全尺寸图像写入UriEXTRA_OUTPUT 值。

【讨论】: