我有我的bitmap
和I want to convert my bitmap to save as image in another new file by below code.
注意:除Galaxy S3外,它在所有设备中都能正常工作。 任何人都可以帮助我使此代码在 S3 中可用。 在转换为新文件时,我总是得到这个 Toast。 任何人都知道可能会出现什么问题。
Bitmap photo = (Bitmap) extras.get("data");
selectedImagePath = String.valueOf(System.currentTimeMillis())
+ ".jpg";
Log.i("TAG", "new selectedImagePath before file "
+ selectedImagePath);
File file = new File(Environment.getExternalStorageDirectory(),
selectedImagePath);
try {
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
photo.compress(Bitmap.CompressFormat.PNG, 95, fos);
} catch (IOException e) {
// TODO Auto-generated catch block
Toast.makeText(this,
"Sorry, Camera Crashed-Please Report as Crash A.",
Toast.LENGTH_LONG).show();
}
提前谢谢。
存储可能未处于要写入的状态,发生这种情况的原因有很多。您应该在访问外部存储之前检查getExternalStorageState
。即使它没有在其他设备上发生,它也可能发生,所以最好防范它。
如果外部存储MEDIA_MOUNTED
,并且您的问题仍然存在,您可以通过向Toast
或日志添加e.getMessage()
来查看导致异常的原因,从而更好地处理正在发生的事情。
您似乎还在使用顶级目录来存储文件。 这应该不会导致技术问题,但最好为应用创建一个子目录并将文件存储在其中。 来自getExternalStorageDirectory
文档 -
应用程序不应直接使用此顶级目录,在 以避免污染用户的根命名空间。