2017-10-04 116 views
0

我在調整JavaFX中的HTMLEditor,我的目標是在HTMLEditor中插入本地圖像。因特網上的圖像沒有問題,並且工作正常,但是當我試圖用絕對路徑插入本地圖像時,它只顯示着名的「X」,他沒有找到它。JavaFX HTMLEditor - 插入具有絕對路徑的本地圖像

試了很多東西,我現在的想法是顯示在下面的代碼:

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> 

第二的想法)我也產生一個畫面並將其保存在我的硬盤,稱爲使用絕對路徑的文件,但這個如上(這裏IM預期路徑導致了同樣的問題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

你的URI是不正確的。在file:部分(方案)之後,您必須具有一個一個斜線或三個斜線。你一定不能有兩個斜槓。

以下是有效的:

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

以下是不是有效:

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

原因是URI語法給出了一個方案之後的兩個斜槓的特殊含義。從the URI generic syntax specification

這種 「通用URI」 語法由四個主要部分組成的序列組成:

<scheme>://<authority><path>?<query>

所以,你可以省略// <權威>完全,或者你可以指定一個空的權限,如上面的前兩個例子所做的那樣。

兩個斜槓意味着接下來的文本C:是一個權限 - 即具有可選用戶,密碼和端口號的主機名。很明顯,C:不是有效的主機名,即使它是,主機名在文件:URI中的確切含義也沒有很好的定義。


您的第二個想法不會按原樣運行。文件名不會自動構成有效的URI。您需要將其轉換爲URI:

htmleditor.setHtmlText("<img src=' " + file.toURI() + "'/>");