相机图像太小

Posted

技术标签:

【中文标题】相机图像太小【英文标题】:Camera Image is too small 【发布时间】:2016-08-08 08:14:15 【问题描述】:

最近几天,我遇到了120 x 160大小的Camera Image太小的问题。

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

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

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

对此一无所知,但我已经尝试了许多关于 SO 的解决方案,但都没有为我工作。

请帮帮我。

【问题讨论】:

【参考方案1】:

您需要指定相机意图的路径来存储真实图像。因为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;
    

然后就可以读取创建图片的真实路径了。

【讨论】:

它会给出android.os.FileUriExposedException,如果你的targetSdkVersion = 24,我们必须使用FileProvider类【参考方案2】:

你得到的只是缩略图。

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

【讨论】:

感谢您的快速回复。但是我已经尝试过了,但它对我也不起作用。【参考方案3】:

不确定在此问题上帮助您是否为时已晚。我也遇到了这个问题,只是想明白为什么那张照片这么小。 原因是在某些手机(LG Tribute 5)上,默认图片尺寸不知何故使用了最低的尺寸(160x120)。为了修复此错误,您必须从相机中获取支持的图片尺寸列表。 类似camera.getParameters.getSupportedPictureSizes(),并尝试选择您想要的最小分辨率,然后setPictureSize 选择您选择的最佳匹配尺寸。 这肯定会解决问题。

【讨论】:

【参考方案4】:

我使用 scaleType fitXY 并且成功了

<ImageView
    android:id="@+id/imgPicture"
    android:layout_
    android:layout_
    scaleType="fitXY"/>

【讨论】:

以上是关于相机图像太小的主要内容,如果未能解决你的问题,请参考以下文章

android裁剪图像太小

UITabBarController 图像太小 [重复]

如何在Android和iPhone上拍摄占据整个屏幕的图像?

将图像居中放在一个太小的 div 中?

尽管尺寸正确,但 Facebook 从外部网站共享的图像太小

人脸 API Python SDK“图像尺寸太小”(PersonGroupPerson add_face_from_stream)