如果绘制的图像不能保存在sd卡中,我会做错什么?

bvjveswy  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(193)

我在清单文件中设置了必要的权限,而toast通知实际上显示图像已保存。下面是执行保存作业的方法。

public void saveImage () {

    int count = 0;

    File sdDirectory = Environment.getExternalStorageDirectory();
    File subDirectory = new File(sdDirectory.toString() + "/Pictures/Paint");

    if (subDirectory.exists()) {

        File[] existing = subDirectory.listFiles();

        for (File file : existing) {

            if (file.getName().endsWith(".jpg") || file.getName().endsWith(".png")) {

                count++;

            }

        }

    } else {

        subDirectory.mkdir();

    }

    if (subDirectory.exists()) {

        File image = new File(subDirectory, "/drawing_" + (count + 1) + ".png");
        FileOutputStream fileOutputStream;

        try {

            fileOutputStream = new FileOutputStream(image);

            mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);

            fileOutputStream.flush();
            fileOutputStream.close();

            Toast.makeText(getContext(), "saved", Toast.LENGTH_LONG).show();

        } catch (FileNotFoundException e) {

        } catch (IOException e) {

        }

    }

}

我的图像是从绘制的文件创建的。我会错过什么?

vfhzx4xs

vfhzx4xs1#

我想你的 mBitmap 变量中没有任何内容,或者您添加了一个额外的 / 在创建图像的行中 File . 试着这样做:

File image = new File(subDirectory, "drawing_" + (count + 1) + ".png");

不管怎样,如果这不起作用,你将不得不调试它。我将删除try->catch语句并查看是否出现错误,直到您知道它工作正常为止,然后只添加try->catch。

相关问题