java - 在 SWT 浏览器中控制图像的来源

标签 java browser swt

我正在使用 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 的方式,您可以:

  1. 如果您自己创建 HTML,只需使用 <img src="data:image/png;base64....将图像转换为 base64 并将其放入 src属性
  2. 如果您从外部来源读取 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/

相关文章:

javascript - 即使您以 150% 放大,也强制浏览器禁用水平条

javascript - 如何使用 JavaScript 从 HTML 获取样式属性?

java - Tabfolder 中的 ScrolledComposite

java - 滚动文件实现

java - 按顺序制作测试用例,以便我可以删除 TestNG 中的多个登录调用

java - 在动态edittext和textview中设置id

java - 从 HttpServletRequest 中退出请求有效负载时抛出 Java Lang 非法状态异常

java - 如何在文本周围应用 css 边框

java - 当新设置时如何重新加载SWT项目?

java - Eclipse SWT ScrolledComposite 拒绝滚动