Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 非常差的相机图像质量_Android_Android Intent_Camera - Fatal编程技术网

Android 非常差的相机图像质量

Android 非常差的相机图像质量,android,android-intent,camera,Android,Android Intent,Camera,我正在尝试将相机拍摄的图像保存到手机中。它可以工作,但图像质量很差。 首先,出于目的,这是我的代码: intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST); 为了达到预期效果,我尝试了以下方法: public void onActivityResult(int requestCode, int resultCode

我正在尝试将相机拍摄的图像保存到手机中。它可以工作,但图像质量很差。 首先,出于目的,这是我的代码:

intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST);
为了达到预期效果,我尝试了以下方法:

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
  super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_PICTURE)
    {
      if (resultCode == RESULT_OK)
        {
          bitmap = (Bitmap) data.getExtras().get("data");
          String path = Images.Media.insertImage(getContentResolver(), bitmap, "", null);
      Uri imageUri = Uri.parse(path);
        }

您能帮我解决这个问题吗?

如果您想将图像存储在磁盘上,请让摄像头应用程序来完成。将
额外的\u输出
Uri
添加到您的
意图
,指向您希望存储图像的位置

package com.commonsware.android.camcon;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import java.io.File;

public class CameraContentDemoActivity extends Activity {
  private static final int CONTENT_REQUEST=1337;
  private File output=null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File dir=
        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

    output=new File(dir, "CameraContentDemo.jpeg");
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));

    startActivityForResult(i, CONTENT_REQUEST);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode,
                                  Intent data) {
    if (requestCode == CONTENT_REQUEST) {
      if (resultCode == RESULT_OK) {
        Intent i=new Intent(Intent.ACTION_VIEW);

        i.setDataAndType(Uri.fromFile(output), "image/jpeg");
        startActivity(i);
        finish();
      }
    }
  }
}
(来自)


Uri
需要指向相机应用程序可以写入的位置,例如外部存储器。

“我正在尝试将相机拍摄的图像保存到手机中”--你为什么不使用
EXTRA_OUTPUT
并让摄像头应用程序为你保存图像?你为什么要缩放图像?@commonware:我该怎么做?@MarkoLazić:即使我不缩放图像,质量仍然很差为什么内容请求常量设置为1337?这只是一个随机数吗?@TashPemhiwa:它必须是一个整数。欢迎您选择另一个适合您的整数。如果您的活动在多个位置为多个不同的请求调用
startActivityForResult()
,则每个请求都需要不同的请求代码整数,因此您的
onActivityResult()
可以区分它们。@Commonware:我明白了。。。感谢您的解释。@SreekanthKarumanaghat:“我观察到使用此代码和本机android摄像头拍摄的图像质量存在差异”——请与您选择的摄像头应用程序的开发人员(作为用户)讨论,您选择的摄像头应用程序是在您的代码启动
操作\u图像捕获
活动时进行的。相机应用程序不需要在通过
ACTION\u IMAGE\u CAPTURE
拍摄的图像和通过同一相机应用程序内的其他方式拍摄的图像之间提供相同的质量(或任何其他内容)。@SreekanthKarumanaghat:“因此ACTION\u IMAGE\u CAPTURE实际上使用一些默认设置调用相机。”--它调用用户选择的摄像头应用程序。“摄像头应用程序可能有不同的设置”-当通过
ACTION\u IMAGE\u CAPTURE
和其他方式(如主屏幕启动图标)启动摄像头应用程序时,其行为可能会有所不同。