无法将图像从PNG转换为TIF后删除图像文件

问题描述 投票:1回答:3

我正在使用BufferedImage通过一些测试创建.PNG文件。现在,在创建图像之后,我尝试将.PNG图像转换为.TIF,效果很好。现在,一旦我创建了TIF图像,我想删除PNG图像。但是由于某些原因,我无法执行此操作。对此没有任何例外。

这是我的代码

File pngFile = null;
FileOutputStream fOut = null;
try {
    pngFile = new File("C:\\Test.PNG");
    fOut = new FileOutputStream ("C:\\Test.TIF");
    RenderedOp src = JAI.create("fileload", "C:\\Test.PNG");
    TIFFImageEncoder encoder = new TIFFImageEncoder (fOut, null);
    encoder.encode (src);
}catch(Exception e) {
}finally {
    fOut.close();
    System.out.println(pngFile.delete());
}
java bufferedimage tiff
3个回答
0
投票

由于您的catch块为空,因此绝对没有例外。

[某些内容可能仍在保存文件的句柄,不允许删除它。我将检查JAI.create,RenderedOp和TiffEncoder。


0
投票

代替提供文件路径为字符串,您可以提供输入流,最后关闭输入流,然后删除文件。这可能有效。


0
投票

我之前曾遇到过同样的问题。在这种情况下,最好的方法是,

首先使用您创建的图像对象处理资源,如下所示var image = Image.FromFile(pngTarget); //这里pngTarget是我的PNG文件的名称以及完整路径。

//您的代码将png转换为tiff。。。

在方法结尾处,您可以在下面编写

image.Dispose(); //我在上面创建的图像对象

File.Delete(pngTarget); //删除文件

此外,如果使用任何内存,请不要忘记刷新/关闭内存流。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.