我正在使用 SWT 编写桌面应用程序,并且出于灵 active 考虑,我在部分界面中使用了浏览器。
我可以很容易地引入外部图像。文件系统中的图像:
<img src="/home/user/image.jpg" />
或网络上的图片:
<img src="http://some.cl/image.jpg" />
我可以从流中获取图像吗?在我的代码的某些地方,我想编写如下代码:
OutputSteam getExternaResource(String resourcePath)
我想任意控制请求的来源。
最佳答案
我不知道有什么直接的方法可以做到这一点,我能想到的就是使用 javascript 将图像数据设置为 base64 字符串到 src
中的图像。
使用 org.eclipse.swt.browser.Browser.execute(String)
或者使用 org.eclipse.swt.browser.BrowserFunction
.
图像应该有一个可以在 javascript 中使用的 id:
<img id="image1" />
编辑:另一方面,也许更容易只解析之前的 HTML 并在那里设置图像 base64 字符串。
根据您获取 HTML 的方式,您可以:
- 如果您自己创建 HTML,只需使用
<img src="data:image/png;base64....
将图像转换为 base64 并将其放入src
属性 如果您从外部来源读取 HTML,您可以使用 JSoup解析 HTML 并替换图像
src
带有 base64 字符串的属性。之后使用Browser.setText(String)
要设置浏览器的 HTML,请注意在这种情况下,相对路径(在链接或图像中)不起作用。String html = "html"; Document doc = Jsoup.parse(html); Elements img = doc.getElementsByTag("img"); for (Element element : img) { String src = element.attr("src"); // READ image using the existing src, convert to base64 (using java.util.Base64) String base64 = ""; element.attr("src", "data:image/png;base64,"+); } String newHtml = doc.html(); browser.setText(newHtml);
关于java - 在 SWT 浏览器中控制图像的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938550/