——》 Highgui.imwrite("/data/pic1111.png", mat)失败,且找不到报错。
ok --》直接使用以下代码,自己保存mat,从而可以跟踪问题。
// java自己写的 实现方法
Bitmap bmp_new = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat, bmp_new, false); // Mat->Bitmap
File f = new File("pic1111.jpg");
if (f.exists()) {
f.delete();
}
try {
FileOutputStream out = new FileOutputStream(f);
bmp_new.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
Log.i("SaveMat", "已经保存");
} catch (FileNotFoundException e) {
// TODO: handle exception
Toast.makeText(this.context, e.getMessage()+"error1", 1).show();
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(this.context, e.getMessage()+"error2", 1).show();
}
——》 跟踪到问题 "Read-only file system"
ref:http://stackoverflow.com/questions/10787942/android-read-only-file-system-ioexception
找到问题:Because you are trying to write the file to root, you need to pass the file path to your file directory.
File f = new File("pic1111.jpg");
FileOutputStream out = new FileOutputStream(f);
改为
File f = new File(context.getFilesDir().getPath().toString()+"/pic1111.jpg");
FileOutputStream out = new FileOutputStream(f);
或者(!!推荐使用)
FileOutputStream out = context.openFileOutput("pic11121.jpg", Context.MODE_PRIVATE);