我正在尝试拍摄图像,将其优化为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);
答案 0 :(得分:0)
最后一行中的空指针异常是由于最后一行中使用的两个变量为null
检查bm!= null 检查bos!= null
答案 1 :(得分:0)
我将假设您正在启动本机相机应用程序,此代码可能来自onActivityResult()方法。
您的问题可能是一些具有运营商特定版本的手机忽略MediaStore.EXTRA_OUTPUT
参数,只返回返回的Intent
中的图像。这意味着您期望的路径上的图像为空,您有时需要使用getData()
从意图中提取图像。