为什么Bitmap.compress()在写入内部存储时返回false?

时间:2018-01-04 22:12:49

标签: android bitmap fileoutputstream internal-storage android-internal-storage

我修改了一些代码,将Bitmap写入以前成功写入外部存储的内部存储(Android)。但是compress()现在返回false。不幸的是,文档没有描述可能导致这种情况的条件,当然,因为没有例外被抛出,所以没有帮助。

以下是我的代码。

// Only change made was to the line immediately below, now commented out 
// File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/AIL_SCANS"); //Creates app specific folder

        File directory = contextIn.getDir("my_pics", Context.MODE_PRIVATE);
        if (!directory.exists())
            directory.mkdirs();

        File file = new File(directory, sFilenameIn + ".jpg");

        FileOutputStream os = new FileOutputStream(file);
        if (!imageIn.compress(Bitmap.CompressFormat.JPEG, 100, os))
            Log.e("Error", "     compress() failed (returned false)");

        os.flush();
        os.getFD().sync();
        os.close();
        Log.e("Success", "     Profit!!");

我的代码将位图创建为ARGB_8888(见下文),因此报告类似故障的其他几个Stack Overflow帖子似乎不适用于此。

bmp = Bitmap.createBitmap(arrPixels, widh, height, Bitmap.Config.ARGB_8888);

一些显然适用于大量Stack Overflow用户的代码示例看起来几乎与我的相似。 Saving and Reading Bitmaps/Images from Internal memory in Android

1 个答案:

答案 0 :(得分:0)

如果您运行的是Android 6.0> =您必须在写入存储空间之前申请权限。

请参阅此文档Ask for permissions