相机图像太小

时间:2016-04-16 09:58:50

标签: android bitmap android-camera bytearray android-camera-intent

从最近几天开始,我遇到的相机影像问题太小,尺寸<120> 160 。

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

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

 Bitmap unscaledBitmap  = (Bitmap) data.getExtras().get("data");
 ByteArrayOutputStream bytes = new ByteArrayOutputStream();
 unscaledBitmap  .compress(Bitmap.CompressFormat.PNG, 30, bytes);
 byte[] bytesDoc1 = bytes.toByteArray();

对此没有任何了解,但我尝试了许多解决方案,但都没有为我工作。

请帮帮我。

4 个答案:

答案 0 :(得分:5)

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

看看这段代码:

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;
    }

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

答案 1 :(得分:0)

你得到的只是缩略图。

如果您希望真实图像最好为相机提供存储图像的文件路径。您可以在onActivityResult中使用该路径。

答案 2 :(得分:0)

不确定是否为时已晚,无法帮助您解决此问题。我也遇到了这个问题,并且弄明白为什么这张照片太小了。 原因是因为在某些手机(LG Tribute 5)上,默认图片大小以某种方式使用最低的(160x120)。为了解决此错误,您必须从相机获取支持的图片大小列表。 像>>> from os.path import splitext >>> data_set = ['1600.csv', '2405.csv', '6800.csv', '10000.csv', '21005.csv'] >>> def convert_to_int(file_name): return int(splitext(file_name)[0]) >>> min(data_set, key=convert_to_int) '1600.csv' >>> max(data_set, key=convert_to_int) '21005.csv' 这样的东西,并尝试选择您想要的最低分辨率,然后将camera.getParameters.getSupportedPictureSizes()设置为您选择的最佳匹配尺寸。 这肯定会解决问题。

答案 3 :(得分:-1)

我使用了scaleType fitXY,并且有效

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