我有一个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。为什么呢?
答案 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上多次发布。