首页 > 解决方案 > 绘制的图像没有保存在我的 SD 卡中,我做错了什么?

问题描述

我在清单文件中设置了必要的权限,并且 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) {


        }

    }

}

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

标签: javaandroidandroid-studio

解决方案


我认为您的变量内部没有任何内容,或者您​​在创建图像的行中mBitmap添加了一个额外的内容。试试这样:/File

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

无论哪种方式,如果这不起作用,您将不得不对其进行调试。我会删除 try -> catch 语句并查看是否出现错误,直到您知道它可以正常工作,然后才重新添加 try -> catch 。


推荐阅读