——》 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);