我修改了一些代码以将位图写入之前成功写入外部存储的内部存储(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 用户运行良好的代码示例与我的几乎一模一样。 在 Android 中从内存中保存和读取位图/图像