我正在将一个TIFF文件转换为vb.net中的.PNG文件。首先,我将TIFF文件保存到特定位置(由NewFileName给出)。然后我使用Bitmap.Save方法将文件转换为.PNG。稍后在我的程序中,我尝试删除所有.tif文件。但是,我收到一个错误,指出文件仍在使用中。我已经做了一些关于其原因的研究,我已经读过很多错误来自不关闭文件流。但是,我不在我的程序中使用filestream,所以我认为它是另一回事。建议的另一种可能性是文件被打开了两次。我已经扫描了我的代码,我很确定文件从未打开过,只能使用bitmap.Save
命令保存和访问。我还下载了handle.exe
和进程资源管理器以查找锁定文件的进程。显然,只有使用bitmap.save
命令将文件转换为PNG后,程序才会使用这些文件。也许有办法关闭bitmap.Save
?关于添加什么的任何其他建议也将受到赞赏。
objApplication.StartCommand(SolidEdgeConstants.AssemblyCommandConstants.AssemblyViewBottomView)
view = window.View
view.Fit()
withoutExt = "C:\Folder" & "\" & shortForms(12) & FileName
NewFileName = withoutExt & ".tif"
view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth)
System.Drawing.Bitmap.FromFile(NewFileName).Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png)
提前致谢!
答案 0 :(得分:0)
我明白了。您只需要一个using语句,以便在删除它之前释放NewFileName
。我将代码更改为此并且有效:
view = window.View
view.Fit()
withoutExt = ChosenFile & "\" & shortForms(13) & FileName
NewFileName = withoutExt & ".tif"
view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth)
Using tempImage = System.Drawing.Bitmap.FromFile(NewFileName)
tempImage.Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png)
End Using
My.Computer.FileSystem.DeleteFile(NewFileName)
感谢大家的帮助!