-1

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

  1. 将位图转换为流。
  2. 将该流写入 SD 卡上的文件。

这是我所做的

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 但不太确定

4

2 回答 2

0

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

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

给它。

于 2012-07-14T21:49:28.363 回答
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);
}
于 2012-07-14T21:50:45.867 回答