动态访问 Jar 文件中的图像文件
Access image file inside a Jar file dynamically
我有一个 Java 项目,导出为 JAR 文件(桌面应用程序),生成一个 HTML 文件作为输出。输出html文件,需要读取一个图片文件,作为页面的标志。 JAR 应用程序将位于 X 文件夹中。目标 html 文件将动态放置在任何地方。如何使位于其他位置的 html 访问 JAR 文件中的图像。
简而言之,对于上述情况,我如何确定以下代码的路径。
java.net.URL url = getClass().getResource("image.jpg");
fw.write("<tr><td><b>"+csname+"</b></td><td> <img src = "+url.toString()+"'>/td></tr>");
工作正常,当我在 eclipse 中 运行。但是当导出为 JAR 时不是
结果 html 文件,在其他文件夹中有代码
<img src="rsrc:com/demo/dirapitoword/image.jpg">
您只需read the image as a stream from the classpath,例如:
InputStream in = getClass().getResourceAsStream("image.jpg");
并将流作为文件写入磁盘上的已知位置。有lots of ways to do this,如果你用的是Java7以上,试试:
File out = new File("image.jpg");
Files.copy(in, out.toPath());
然后,您的 src
属性可以使用您选择的相对位置在 HTML 中显示此图像,而不必担心浏览器/客户端中的 Jar 兼容性。
您可以发现 jar:
URI 方案存在于 .zip 容器中,如维基百科此处所述http://en.wikipedia.org/wiki/URI_scheme
格式为:
jar:<url>!/[<entry>]
但是 并非所有浏览器(实际上只有 Firefox)都支持它,如本文所述:https://code.google.com/p/browsersec/wiki/Part1
即使在那种情况下,我认为输出 .html 可以在其他地方但包含资源的绝对路径也不是很好。
我建议使用 data:
URI 方案,它允许在 HTML 页面中嵌入图像。
有一个问题涉及此过程:How to display Base64 images in HTML?
其中一个答案中有一个有趣的 fiddle 示例:http://jsfiddle.net/hpP45/
我有一个 Java 项目,导出为 JAR 文件(桌面应用程序),生成一个 HTML 文件作为输出。输出html文件,需要读取一个图片文件,作为页面的标志。 JAR 应用程序将位于 X 文件夹中。目标 html 文件将动态放置在任何地方。如何使位于其他位置的 html 访问 JAR 文件中的图像。
简而言之,对于上述情况,我如何确定以下代码的路径。
java.net.URL url = getClass().getResource("image.jpg");
fw.write("<tr><td><b>"+csname+"</b></td><td> <img src = "+url.toString()+"'>/td></tr>");
工作正常,当我在 eclipse 中 运行。但是当导出为 JAR 时不是 结果 html 文件,在其他文件夹中有代码
<img src="rsrc:com/demo/dirapitoword/image.jpg">
您只需read the image as a stream from the classpath,例如:
InputStream in = getClass().getResourceAsStream("image.jpg");
并将流作为文件写入磁盘上的已知位置。有lots of ways to do this,如果你用的是Java7以上,试试:
File out = new File("image.jpg");
Files.copy(in, out.toPath());
然后,您的 src
属性可以使用您选择的相对位置在 HTML 中显示此图像,而不必担心浏览器/客户端中的 Jar 兼容性。
您可以发现 jar:
URI 方案存在于 .zip 容器中,如维基百科此处所述http://en.wikipedia.org/wiki/URI_scheme
格式为:
jar:<url>!/[<entry>]
但是 并非所有浏览器(实际上只有 Firefox)都支持它,如本文所述:https://code.google.com/p/browsersec/wiki/Part1
即使在那种情况下,我认为输出 .html 可以在其他地方但包含资源的绝对路径也不是很好。
我建议使用 data:
URI 方案,它允许在 HTML 页面中嵌入图像。
有一个问题涉及此过程:How to display Base64 images in HTML?
其中一个答案中有一个有趣的 fiddle 示例:http://jsfiddle.net/hpP45/