BitmapFactory.decodeFile()为相机图片

时间:2016-11-05 15:33:23

标签: java android bitmap

我有一个Android应用程序,我去相机活动并拍照,然后我执行以下代码:

        String s1 = file_uri.getPath();
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        bitmap = BitmapFactory.decodeFile( s1, options);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50,  stream);

其中file_uri是来自手机存储的图像路径(它不为空)位图变量为null。为什么呢?

2 个答案:

答案 0 :(得分:0)

你的形象可能太大而你内存不足

答案 1 :(得分:0)

    options.inJustDecodeBounds = true;
    bitmap = BitmapFactory.decodeFile( s1, options);

在这些陈述之后bitmap总是null'。这很正常。

    options.inJustDecodeBounds = false;
    bitmap = BitmapFactory.decodeFile( s1, options);

现在你可以拥有一个位图。如果没有,那么位图对于可用内存将是大的并且decodeFile()已经返回null;

然后你应该调整图像大小。 在变量options中,您可以找到图像的宽度和高度。 通过了解像素宽度和高度,您可以计算比例因子。或者只是说int scale = 8;`。

   options.inSampleSize = scale;    

之后再做一次调用,如

    options.inJustDecodeBounds = false;
    bitmap = BitmapFactory.decodeFile( s1, options);

此预设代码已在stackoverflow上多次发布。