当前位置: 首页 > 知识库问答 >
问题:

克服Android摄像头产生的低分辨率照片结果[重复]

常睿范
2023-03-14

我想从相机拍摄照片并将其上传到服务器,但当我从相机拍摄照片并上传照片时,分辨率较低。

代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    CaptureImageFromCamera = (ImageView)findViewById(R.id.imageView);

    CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                startActivityForResult(takePictureIntent, 1);
            }
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == 1)
            try {
                onCaptureImageResult(data);
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}

private void onCaptureImageResult(Intent data) throws IOException {
    bitmap = (Bitmap) data.getExtras().get("data");
    ByteArrayOutputStream bytes;
    bytes = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes);

    File destination = new File(Environment.getExternalStorageDirectory(),
            "DCA/Attachment/" + System.currentTimeMillis() + ".png");
    FileOutputStream fo;
    try {
        destination.createNewFile();
        fo = new FileOutputStream(destination);
        fo.write(bytes.toByteArray());
        fo.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    ImageViewHolder.setImageBitmap(bitmap);
}

可以看出,图像质量是低分辨率的。

有没有办法解决这个问题?

[更新]我该如何解决这个问题

我在这里读这篇文章是为了解决这个问题

注意:从起始页开始阅读

共有3个答案

宋典
2023-03-14

对于从相机拍摄的图像,您应该考虑JPEG压缩。PNG更适合使用颜色较少的图标。

林昱
2023-03-14

尝试使用TextureView。SurfaceTextureRelistener摄像头。拍摄照片(shutterCallback、rawCallback、pictureCallback)

臧欣怿
2023-03-14
package com.example.admin.camsdemo;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
Button captureimage;
ContentValues cv;
Uri imageUri;
ImageView imgView;
    public static final int PICTURE_RESULT=111;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        captureimage=(Button)findViewById(R.id.opencamera);
        imgView=(ImageView)findViewById(R.id.img);
        captureimage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                cv = new ContentValues();
                cv.put(MediaStore.Images.Media.TITLE, "My Picture");
                cv.put(MediaStore.Images.Media.DESCRIPTION, "From Camera");
                imageUri = getContentResolver().insert(
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, cv);
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                startActivityForResult(intent, PICTURE_RESULT);
            }
        });
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {

            case PICTURE_RESULT:
                if (requestCode == PICTURE_RESULT)
                    if (resultCode == Activity.RESULT_OK) {
                        try {
                          Bitmap thumbnail = MediaStore.Images.Media.getBitmap(
                                    getContentResolver(), imageUri);
                            imgView.setImageBitmap(thumbnail);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                    }
        }
    }
}
 类似资料:
  • 问题内容: 我需要使用Java程序减小图像的大小(而不是宽度和高度)。他们为此提供了任何好的API吗? 我需要将大小从1MB减少到大约50kb-100 kb。当然,分辨率会降低,但这并不重要。 问题答案: 这是工作代码 这段代码对我来说很棒。如果需要调整图像大小,则可以在此处更改x和y比例J;

  • 我试图从我的摄像头获取图像使用导入OpenCV的python代码。代码如下: 代码工作正常,除了相机默认分辨率为640x480,我的代码似乎只能设置比这更低的分辨率值。例如,我可以将图像大小设置为320x240,但我不能将其更改为800x600。我没有出现错误:只是分辨率设置为默认值(640x480),因为我试图将其设置为更高的值。 我正在使用的摄像头(没有其他网络摄像头连接到计算机)是Quick

  • 好的,这里有一个奇怪的问题,我有问题(用gcc btw编译) 下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子 不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭

  • 当我用Android相机拍照时,我得到的是低质量的位图图像。我想知道是否有可能使这张照片质量良好。 我谷歌了一些关于它的信息,我想我必须使用EXTRA_OUTPUT(http://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE) 我很挣扎,因为我不知道该把它放在哪里,也不知道

  • 问题内容: 当网站输出到客户端时,我正在尝试优化网站的大小。缓存时,我分别只有1.9MB和29KB。问题在于,第一次加载包含的图像对于移动设备而言并未经过优化。它具有1080p分辨率。 因此,我正在寻找一种方法,该方法允许我首先加载低分辨率版本(),一旦网站加载完毕,请使用高分辨率版本- 甚至分辨率接近所用设备的分辨率版本(或只是) 。 就像每个人都期望的那样,使用CSS设置背景。它应用于主体,整

  • 我在Android webview上工作。我在从中的动作上传图像时遇到了问题。在这里,相机打开,我点击图像,但然后什么也没发生,图像无法上传。但它可以很好地与文档或图库。有很多解决方案和这个。但我无法解决我的问题。可以做些什么来解决这个问题? 在我的menifest文件中,我包括: 在我的活动中,我包括: 对于我的WebChromeClient,我包括: 这里可以做些什么,以便图像通过相机动作上传