如何获得高分辨率图像

Posted

技术标签:

【中文标题】如何获得高分辨率图像【英文标题】: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 对象可以在我的应用程序中运行 我不明白你的意思 【参考方案1】:

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

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

【讨论】:

以上是关于如何获得高分辨率图像的主要内容,如果未能解决你的问题,请参考以下文章

如何计算图像的分辨率?

iphone OS 4.0-显示更高分辨率图像的问题

超分重建数据集

如何使用 Camera.takePicture() 拍摄高分辨率图像?

如何使用 UIImageView 在 iOS4 中显示高分辨率图像

如何在imageView上设置自动布局约束以获得良好的分辨率图像?