我一直在想使用ImageMagic(im4java)来比较已知的良好页面渲染与存储的好页面。
我在测试网站上有这个工作,但我的所有图像(好的,坏的和不同的)都存储在我的c:\ temp文件夹中。我一直在想要将“预期”图像保存在项目文件夹结构中,因此当项目签出时,预期的图像就在那里。
(不是说这是一个很好的解决方案,这只是我一直在玩的东西。)
所以我的测试存储在 的 /src/test/java/my.screen.test/compareTest.java 而我的“预期”形象 的 /masterImages/test.png
我尝试了各种方法来引用它:
我在构建路径中包含了masterImages,然后尝试使用 InputStream input = getClass()。getResourceAsStream(“/ masterImages / googleHomePage1.png”); (然后我以为我可以简单地使用input.toString()传递给im4java - 但是InputStream给了我nullpointer异常) 我还尝试从构建路径中删除masterImages并尝试这种方式。
我也试过了 String path = getClass()。getClassLoader()。getResource(“masterImages / googleHomePage1.png”)。toString(); 再次,空指针。我知道有一些愚蠢的东西,我没有在这里看到,就像我说这开始是在我玩,但它现在让我烦恼为什么我不能让它工作。
对我所缺少的任何见解都非常感激。
答案 0 :(得分:0)
从 - In java, how do you retrieve images from a jar file?
确实很简单:您使用getResource()
和java.lang.Class
中的各种java.lang.ClassLoader
方法。例如,在您的应用中,您可以写
treeURL = getClass().getResource("/images/tree.png");
这会在jar文件根目录下的images目录中找到该文件。关于getResource()
方法的好处是,无论文件是否在jar中它们都可以工作 - 如果images目录是磁盘上的真实目录,这仍然可以工作(只要图像的父级是你的课程路径的一部分。)
答案 1 :(得分:0)
感谢所有人。我想我有这个排序。事实证明我必须将包含图像的文件夹添加到类路径中 - 我错误地认为,因为我有masterImages / otherFolderName,如果我包含masterImages,则包含otherFolderName中的任何文件。事实证明并非如此(至少对我来说。)