在 SWT 浏览器中控制图像的来源
Control the origin of images in an SWT browser
我正在使用 SWT 编写桌面应用程序,并且由于灵活性,我在部分界面中使用了浏览器。
我可以很容易地引入外部图像。文件系统中的图像:
<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);
如果您可以控制 HTML 页面,即它是由您的代码生成的,可能来自模板,那么您可以嵌入图像。
图像的字节需要进行 base64 编码并附加到 image
标签的 src
属性,如下所述:http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/
我正在使用 SWT 编写桌面应用程序,并且由于灵活性,我在部分界面中使用了浏览器。
我可以很容易地引入外部图像。文件系统中的图像:
<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);
如果您可以控制 HTML 页面,即它是由您的代码生成的,可能来自模板,那么您可以嵌入图像。
图像的字节需要进行 base64 编码并附加到 image
标签的 src
属性,如下所述:http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/