Android 安卓相机拍摄的照片尺寸非常小

Android 安卓相机拍摄的照片尺寸非常小,android,android-camera,android-camera-intent,Android,Android Camera,Android Camera Intent,我正在尝试从相机中捕获图像,压缩它,然后将其存储到SD卡。如果我直接使用下面的代码将其保存到SD卡,我会得到完整的图像。但是如果我尝试在系统中加载图像,我会得到一个超小的图像大小,比如320 x 240,而不是一个完整的5 mp图像 Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri())

我正在尝试从相机中捕获图像,压缩它,然后将其存储到SD卡。如果我直接使用下面的代码将其保存到SD卡,我会得到完整的图像。但是如果我尝试在系统中加载图像,我会得到一个超小的图像大小,比如320 x 240,而不是一个完整的5 mp图像

        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
    startActivityForResult(intent, CAMERA_PIC_REQUEST);  
getImageURI()的位置

现在,当我尝试将其保存到内部内存时,我使用以下代码获取微小图像:

    public void imageFromCamera() { //code to retrieve image
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    startActivityForResult(intent, CAMERA_PIC_REQUEST);  
    }
在我的startActivitForResult中,我有以下几点:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
        Bitmap bm = (Bitmap) data.getExtras().get("data"); 
        Log.e("sys", "width is "+bm.getWidth()); //im gettting an extremely small width here

        OutputStream outStream = null;
        file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.png");
        try {
         outStream = new FileOutputStream(file);
         bm.compress(Bitmap.CompressFormat.JPEG, 70, outStream);
         outStream.flush();
         outStream.close();

         Log.i("Hub", "OK, Image Saved to SD");
         Log.i("Hub", "height = "+ bm.getHeight() + ", width = " + bm.getWidth());

        } catch (FileNotFoundException e) {

         e.printStackTrace();
         Log.i("Hub", "FileNotFoundException: "+ e.toString());

        } catch (IOException e) {

         e.printStackTrace();
         Log.i("Hub", "IOException: "+ e.toString());
        }



    }

在没有MediaStore.EXTRA\u输出的情况下调用相机intent时,相机只返回一个小缩略图,因为intent捆绑包不是为传递大内存块而设计的。 从SDK文档中:

可发送的标准意图操作,以使相机应用程序捕获图像并返回。
调用者可以传递一个额外的
extra_输出
,以控制将写入此图像的位置。如果不存在
EXTRA\u输出
,则会在EXTRA字段中以位图对象的形式返回一个小尺寸的图像。这对于只需要小图像的应用程序非常有用。如果存在
EXTRA\u输出
,则完整大小的图像将写入
EXTRA\u输出
的Uri值

哇,更新了问题以包括我的实际问题。您找到问题的解决方案了吗?因为我也面临着同样的问题
    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
        Bitmap bm = (Bitmap) data.getExtras().get("data"); 
        Log.e("sys", "width is "+bm.getWidth()); //im gettting an extremely small width here

        OutputStream outStream = null;
        file = new File(Environment.getExternalStorageDirectory() + "/DCIM","itshelp.png");
        try {
         outStream = new FileOutputStream(file);
         bm.compress(Bitmap.CompressFormat.JPEG, 70, outStream);
         outStream.flush();
         outStream.close();

         Log.i("Hub", "OK, Image Saved to SD");
         Log.i("Hub", "height = "+ bm.getHeight() + ", width = " + bm.getWidth());

        } catch (FileNotFoundException e) {

         e.printStackTrace();
         Log.i("Hub", "FileNotFoundException: "+ e.toString());

        } catch (IOException e) {

         e.printStackTrace();
         Log.i("Hub", "IOException: "+ e.toString());
        }



    }