将位图从imageview存储到SD

时间:2012-07-14 21:44:23

标签: android

我正在尝试保存在imageview上显示的位图。我的理解是我需要

  1. 将位图转换为流。
  2. 将该流写入SD卡上的文件。
  3. 这就是我所做的

    try {
                       File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
                       File file = new File(path, "name.png");
                       FileOutputStream out = null;
                       if (file.exists()) {
                           // do something awesome
    
                       } else {
    
                           out = new FileOutputStream(file);
                           currentimage.compress(Bitmap.CompressFormat.PNG, 100, out);
                       }
                       out.close();
                } catch (Exception e) {
                       e.printStackTrace();
                }
    

    我正在尝试更改保存的文件名,我知道它会进入FileOutputStream但不太确定

2 个答案:

答案 0 :(得分:0)

您的代码看起来正确,唯一的问题是您没有关闭OutputStream。 你需要添加

try {
    out.close();
} catch (IOExcetion ex) {
}

到它。

答案 1 :(得分:0)

您需要通过扩展您到达公共图片目录的路径来提供文件名。

FileOutputStream out = new FileOutputStream(new File(path, "name.png"));

或者,如果您想先检查它是否已存在:

File file = new File(path, "name.png");
if (file.exists()) {
    // do something awesome
    // perhaps save over top
    // perhaps pick another name
} else {
    // save it
    FileOutputStream out = new FileOutputStream(file);
    currentimage.compress(Bitmap.CompressFormat.PNG, 100, out);
}