title: Android: OpenCV: imwrite always returns false and fails to write
body: <p>This code used to work but on Android 4.2 and OpenCV 2.4.4 it fails, but I don't know why. Can anyone shed any light on it for me?</p>
  
  <p>Thanks for any help.</p>
  
  <p>Baz</p>
  
  <pre><code>public void SaveImage (Mat mat) {
    Mat mIntermediateMat = new Mat();
  
    Imgproc.cvtColor(mRgba, mIntermediateMat, Imgproc.COLOR_RGBA2BGR, 3);
  
    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    String filename = "barry.png";
    File file = new File(path, filename);
  
    Boolean bool = null;
    filename = file.toString();
    bool = Highgui.imwrite(filename, mIntermediateMat);
  
    if (bool == true)
      Log.d(TAG, "SUCCESS writing image to external storage");
    else
      Log.d(TAG, "Fail writing image to external storage");
    }
  </code></pre>
  
  <p>bool comes back false every time. The file path/name is as it should be ("storage/emulated/0/Pictures/barry.png") for User #0 and the directory Pictures is there.</p>
  
  <p>What can make imwrite return false?</p>
  
  <p>I could convert the mat to a bmp and save it myself (which I do elsewhere in a non-OpenCV app) but since Highgui.imwrite is there, and this code used to work when I was writing to 2.4.0 and testing on Android 3.x, I'd like to use it if I can.</p>
  
  <p>Many thanks</p>
  
  <p>Baz</p>