2013-07-14 73 views
1

我試圖從一個文件中創建一個JEditorPane內聯(嵌入)的圖像,例如(嵌入)圖像:JEditorPane中的HTML文檔內嵌從文件

<img src="data:image/gif;utf-8,data..."> 

但我的代碼中掙扎。

到目前爲止,我已經(假設一個GIF文件):

try 
{ 
    File imageFile = new File("C:\\test\\testImage.gif"); 
    File htmlFile = new new File("C:\\test\\testOutput.html"); 

    byte[] imageBytes = Files.toByteArray(imageFile); 
    String imageData = new String(imageBytes, "UTF-8"); 

    String html = "<html><body><img src=\"data:image/gif;utf-8," + imageData + "\"></body></html>"; 

    FileUtils.writeStringToFile(htmlFile, htmlText); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

這並創建一個文件,但圖像是無效的。我敢肯定,我不會轉換圖像的正確方法...

+0

順便說一句,我真的不關心編碼,它可能是base64。 –

+0

我能夠得到這個工作。說明是在這裏: http://stackoverflow.com/questions/20943833/how-to-render-a-internal-image-on-a-swing-component-using-html/27921370#27921370 –

回答

2

JEditorPane(和一般的Java HTML渲染)不支持Base64編碼的圖像。

當然'不'!='不能'。

事情是,你需要創建(或調整)一個EditorKit可以有新的元素定義。例如,見於AppletEditorKit。你需要尋找HTML.tag.IMG - 這是一個標準的圖像,稱爲super功能,否則使用this source(或類似)將其轉換爲圖像,然後嵌入它。

+0

不幸的是我沒有找到方法,所以我不得不相信你的答案:( –

+0

請參閱編輯回答。 –