-1

我的应用程序的想法是从相机捕获图像,然后从中裁剪指定区域。

问题:当我第一次将裁剪的图像保存在我的 sd 卡中以启动应用程序时,它正确保存。但是当再次运行我的应用程序并拍摄图像然后裁剪它时。保存时,第一次拍摄和裁剪的第一张图像出现在 SD 卡中,而不是当前的一张。

这是我保存图像的代码:

public static void save(Activity activity, Bitmap bm, String name) {
    OutputStream outStream = null;

    File externalFilesDir = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File outFile = new File(externalFilesDir, "IDOCR" + File.separator + "Numbers");

    if (!outFile.exists())
        outFile.mkdirs();

    File number = new File(outFile, name + ".PNG");
    //if (number.exists())
    //  number.delete();
    try {
        //outStream = new FileOutputStream(new File(path));
        outStream = new FileOutputStream(number);
        bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
        outStream.flush();
        outStream.close();

        bm.recycle();
        System.gc();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
4

1 回答 1

0

也许如果你试图覆盖文件的以前版本,你应该先删除以前的......

你可以加:

if (!outFile.exists())
    outFile.mkdirs();
else {
    outFile.delete();
    outFile.createNewFile();
}
于 2012-06-20T23:06:59.617 回答