android:保存图像时的nullpointer

时间:2011-02-21 16:20:12

标签: android nullpointerexception fileoutputstream

我正在尝试拍摄图像,将其优化为65%jpeg并将其保存到手机存储中。 下面的代码在我的nexus上运行正常,但是在最后一行返回一个空指针异常。

知道我做错了什么吗? 感谢

// image passed in from camera
Bitmap bm = BitmapFactory.decodeFile(selectedImagePath, opts);

// create output
FileOutputStream fileOutputStream = null;

// create filename & directory
String nameFile = "ms" + String.valueOf(System.currentTimeMillis())+ ".jpg";
String directory = "/DCIM/MySeats/";

// try creating the directories if they don't already exist         
File file = new File(Environment.getExternalStorageDirectory(),directory);
file.mkdirs();

// prep output
fileOutputStream = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+ directory + nameFile);
optimizedImagePath = Environment.getExternalStorageDirectory().toString()+ directory + nameFile;

// write file through a buffered stream
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);

// This line causes a null pointer exception on some phones?
// What am I missing?
bm.compress(CompressFormat.JPEG, 65, bos);

2 个答案:

答案 0 :(得分:0)

最后一行中的空指针异常是由于最后一行中使用的两个变量为null

检查bm!= null 检查bos!= null

答案 1 :(得分:0)

我将假设您正在启动本机相机应用程序,此代码可能来自onActivityResult()方法。 您的问题可能是一些具有运营商特定版本的手机忽略MediaStore.EXTRA_OUTPUT参数,只返回返回的Intent中的图像。这意味着您期望的路径上的图像为空,您有时需要使用getData()从意图中提取图像。