JavaFX HTMLEditor - 使用绝对路径插入本地映像

时间:2017-10-04 19:35:31

标签: java image javafx html-editor

我正在调整JavaFX中的HTMLEditor,我的目标是在HTMLEditor中插入本地图像。互联网上的图像没有问题,工作正常但是当我尝试插入带有绝对路径的本地图像时,它只显示着名的" X",他没有找到它。

尝试了很多事情,我目前的想法如下所示:

htmleditor.setHtmlText(
"<img src='file://C:/hi.png'/>");

这导致了以下的html代码,我觉得这很好,我想要的结果却不能渲染图像......

<html dir="ltr"><head></head><body contenteditable="true">
<img src="file://C:/test.png"></body></html>

第二个想法)我还生成了一张图片并将其保存在我的硬盘上,称为带有绝对路径的文件,但这导致了与上述相同的问题(这里我希望路径100%正确.. )。

File file = new File(TextArea_imagePath.getText() + ".png");
ImageIO.write(img, "png", file);
htmleditor.setHtmlText("<img src=' " + file.getAbsolutePath() + "'/>");

希望有人能帮助我,猜猜这是一个愚蠢的错误。

P.S: Set a local image in JavaFX HTMLeditor无法帮助我处理没有路径的图像

1 个答案:

答案 0 :(得分:1)

您的URI不正确。在hustle-on.wav部分(方案)之后,您必须具有一个斜杠或三个斜杠。你一定不能有两个斜杠。

以下内容有效:

  • file:
  • <img src='file:/C:/hi.png'/>

以下是有效:

  • <img src='file:///C:/hi.png'/>

这样做的原因是URI语法对方案后面的两个斜杠赋予特殊含义。来自the URI generic syntax specification

  

这个&#34;通用URI&#34;语法由四个主要组件序列组成:

     

<img src='file://C:/hi.png'/>

所以你可以省略//&lt; authority&gt;完全,或者您可以指定一个空权限,如上面的前两个例子那样。

两个斜杠意味着后面的文本<scheme>://<authority><path>?<query>是一个权限 - 即具有可选用户,密码和端口号的主机名。显然C:不是有效的主机名,即使它是,但文件中主机名的确切含义:URI没有很好地定义。

你的第二个想法不会有效。文件名不会自动构成有效的URI。您需要将其转换为URI:

C: