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
和其他方式(如主屏幕启动图标)启动摄像头应用程序时,其行为可能会有所不同。