Save bitmap to file function Save bitmap to file function android android

Save bitmap to file function


  1. You need an appropriate permission in manifest.xml:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  2. out.flush() check the out is not null..

  3. String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() +                             "/PhysicsSketchpad";File dir = new File(file_path);if(!dir.exists())    dir.mkdirs();File file = new File(dir, "sketchpad" + pad.t_id + ".png");FileOutputStream fOut = new FileOutputStream(file);bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);fOut.flush();fOut.close();


In kotlin :

private fun File.writeBitmap(bitmap: Bitmap, format: Bitmap.CompressFormat, quality: Int) {    outputStream().use { out ->        bitmap.compress(format, quality, out)        out.flush()    }}

usage example:

File(exportDir, "map.png").writeBitmap(bitmap, Bitmap.CompressFormat.PNG, 85)


Two example works for me, for your reference.

Bitmap bitmap = Utils.decodeBase64(base64);try {    File file = new File(filePath);    FileOutputStream fOut = new FileOutputStream(file);    bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut);    fOut.flush();    fOut.close();}catch (Exception e) {    e.printStackTrace();    LOG.i(null, "Save file error!");    return false;}

and this one

Bitmap savePic = Utils.decodeBase64(base64);File file = new File(filePath);File path = new File(file.getParent());if (savePic != null) {    try {        // build directory        if (file.getParent() != null && !path.isDirectory()) {            path.mkdirs();        }        // output image to file        FileOutputStream fos = new FileOutputStream(filePath);        savePic.compress(Bitmap.CompressFormat.PNG, 90, fos);        fos.close();        ret = true;    } catch (Exception e) {        e.printStackTrace();    }} else {    LOG.i(TAG, "savePicture image parsing error");}