我目前在我正在构建的Java应用程序中使用ImageJ jar(ij.jar),并设法使一切正常运行。但是,当我执行该行时有可能:
ImagePlus image = new ImagePlus(path);
(其中path是用户指定的图像路径),图像可能不存在。在访问image
的方法之前,ImageJ库不会抛出错误,此时,ImageJ将打印到控制台There are no images open.
并终止程序。我相信ImageJ实际上是在打印该行时调用System.exit()
,因为整个应用程序终止 - 包含Deamon线程。
有没有办法使用ImageJ检查图像是否成功打开?或者我应该使用Java的File类来检查文件是否存在?
修改
为了澄清,这是一个多线程应用程序,可能会尝试同时打开和处理许多图像。 ImageJ类(IJ
)具有打开图像的功能,但IJ
是单例类,因此在同时发生多次IJ.openImage("string")
调用时会出现奇怪的行为。
答案 0 :(得分:1)
测试图像是否成功加载的一种方法是检查图像的宽度和高度是否都为零:
ImagePlus image = new ImagePlus("/non/existent");
if (image.getWidth() == 0 && image.getHeight() == 0) {
// Then the image wasn't loaded...
}
我担心我无法重现你描述应用程序退出的行为,所以也许这对你不起作用......