Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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_Bitmap_Android Camera_Bytearray_Android Camera Intent - Fatal编程技术网

Android 相机图像太小

Android 相机图像太小,android,bitmap,android-camera,bytearray,android-camera-intent,Android,Bitmap,Android Camera,Bytearray,Android Camera Intent,从最近几天开始,我一直在忍受相机图像太小的问题,其大小为120x160 场景是,当我从相机捕获图像并将该图像转换为字节[]时,它变得太小 以下是我正在使用的代码: Bitmap unscaledBitmap = (Bitmap) data.getExtras().get("data"); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); unscaledBitmap .compress(Bitmap.CompressF

从最近几天开始,我一直在忍受相机图像太小的问题,其大小为120x160

场景是,当我从相机捕获图像并将该图像转换为字节[]时,它变得太小

以下是我正在使用的代码:

 Bitmap unscaledBitmap  = (Bitmap) data.getExtras().get("data");
 ByteArrayOutputStream bytes = new ByteArrayOutputStream();
 unscaledBitmap  .compress(Bitmap.CompressFormat.PNG, 30, bytes);
 byte[] bytesDoc1 = bytes.toByteArray();
我对此一无所知,但我已经尝试了很多解决方案,但都不适合我


请帮帮我。

你得到的只是缩略图


如果你想要真实的图像,最好给相机一个存储图像的文件路径。然后可以在onActivityResult中使用该路径。

您得到的只是缩略图


如果你想要真实的图像,最好给相机一个存储图像的文件路径。然后,您可以在onActivityResult中使用该路径。

您需要为要存储真实图像的相机指定路径。因为
data.getExtras().get(“数据”)只需从真实图像中获取缩略图

看看这段代码:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

// Create the File where the photo should go
File photoFile = createImageFile();


if (photoFile != null) {
   takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
   startActivityForResult(takePictureIntent, 1);
}
这是创建文件的方法:

private File createImageFile() {

        long timeStamp = System.currentTimeMillis();
        String imageFileName = "NAME_" + timeStamp;
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        return image;
    }

然后,您可以读取所创建图片的真实路径。

您需要为要存储真实图像的相机指定路径。因为
data.getExtras().get(“数据”)只需从真实图像中获取缩略图

看看这段代码:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

// Create the File where the photo should go
File photoFile = createImageFile();


if (photoFile != null) {
   takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
   startActivityForResult(takePictureIntent, 1);
}
这是创建文件的方法:

private File createImageFile() {

        long timeStamp = System.currentTimeMillis();
        String imageFileName = "NAME_" + timeStamp;
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        return image;
    }

然后,您可以阅读创建的图片的真实路径。

不确定是否已经太晚,无法帮助您解决此问题。我也面临着这个问题,只是想知道为什么那张照片这么小。 原因是,在某些手机(LG 5)上,默认的图片大小是最低的(160x120)。为了修复此错误,您必须从相机获取支持的图片大小列表。 类似于
camera.getParameters.getSupportedPictureSizes()
,尝试选择所需的最小分辨率,然后
setPictureSize
设置为所选的最佳匹配大小。
这肯定会解决问题。

不确定在这个问题上帮助您是否为时已晚。我也面临着这个问题,只是想知道为什么那张照片这么小。 原因是,在某些手机(LG 5)上,默认的图片大小是最低的(160x120)。为了修复此错误,您必须从相机获取支持的图片大小列表。 类似于
camera.getParameters.getSupportedPictureSizes()
,尝试选择所需的最小分辨率,然后
setPictureSize
设置为所选的最佳匹配大小。
这肯定会解决这个问题。

我使用了scaleType
fitXY
,效果很好

<ImageView
    android:id="@+id/imgPicture"
    android:layout_width="70dp"
    android:layout_height="70dp"
    scaleType="fitXY"/>

我使用了scaleType
fitXY
,它很有效

<ImageView
    android:id="@+id/imgPicture"
    android:layout_width="70dp"
    android:layout_height="70dp"
    scaleType="fitXY"/>


感谢您的快速响应。但我已经试过了,但对我来说也不起作用。谢谢你的快速回复。但我已经试过了,但对我来说也不起作用。如果你的targetSdkVersion<24,它会给android.os.FileUriExposedException。对于targetSdkVersion>=24,我们必须使用FileProvider classIt,如果您的targetSdkVersion<24,它将给出android.os.FileUrieExposedException。对于targetSdkVersion>=24,我们必须使用FileProvider类