Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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_Bitmap_Android Camera - Fatal编程技术网

Android 照相机返回小图片

Android 照相机返回小图片,android,android-intent,bitmap,android-camera,Android,Android Intent,Bitmap,Android Camera,我正在用相机拍摄一张照片。这是我的代码,非常有效: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUES

我正在用相机拍摄一张照片。这是我的代码,非常有效:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
我的onActivityResult如下所示:

if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap photo = (Bitmap) extras.get("data");
    }
}
问题是,虽然相机拍摄的照片是480*800(我使用的是HTC Desire),但返回的位图只有194*324

知道为什么会发生这种情况以及如何解决吗


谢谢

阅读此答案以获得完整的图像大小



当您使用从extra读取
位图时,您将获得图像的
缩略图
我也有同样的问题,我在谷歌安卓网站上找到了一个例子:

如果我们想从 照相机活动我们别无选择,只能将其保存到文件中,然后使用:

  • 因此,首先,与前面一样,我们需要创建一个静态int,作为我们的请求代码:
  • 公共静态最终整数捕获\图像\全尺寸\活动\请求\代码= 1777;

  • 接下来,我们再次激发启动活动以获得结果的意图:
  • Intent Intent=新的Intent(“android.media.action.IMAGE_-CAPTURE”);文件 文件=新 文件(Environment.getExternalStorageDirectory()+File.separator+ “image.jpg”);intent.putExtra(MediaStore.EXTRA_输出, fromFile(file));startActivityForResult(意向, 捕获(图像、全尺寸、活动、请求、代码)

    在这里,我们实际上是传递一个URI作为额外的目的,以保存图像

  • 最后,我们将在onActivityResult中收到结果:

            protected void onActivityResult(int requestCode, int resultCode, Intent data) 
             {  
                 //Check that request code matches ours:
                 if (requestCode == CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE) 
                 {
                     //Get our saved file into a bitmap object:
    
                    File file = new File(Environment.getExternalStorageDirectory()+File.separator +
             "image.jpg");
                    Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700);
                 }
        }
    
  • decodeSampledBitmapFromFile方法是:

    public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) 
    { // BEST QUALITY MATCH
    
        //First decode with inJustDecodeBounds=true to check dimensions
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(path, options);
    
        // Calculate inSampleSize, Raw height and width of image
        final int height = options.outHeight;
        final int width = options.outWidth;
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        int inSampleSize = 1;
    
        if (height > reqHeight) 
        {
            inSampleSize = Math.round((float)height / (float)reqHeight);
        }
        int expectedWidth = width / inSampleSize;
    
        if (expectedWidth > reqWidth) 
        {
            //if(Math.round((float)width / (float)reqWidth) > inSampleSize) // If bigger SampSize..
            inSampleSize = Math.round((float)width / (float)reqWidth);
        }
    
        options.inSampleSize = inSampleSize;
    
        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;
    
        return BitmapFactory.decodeFile(path, options);
    }
    
    将相关相机权限添加到清单文件:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    
    

    希望它能帮助任何人解决这个问题。因为它对我100%有效。

    我遵循了它,并没有成功地将图像存储到gallery。但存储的图像质量也很差。。如何获得好的质量?