Feemarker写入图像为HTML(Feemarker writing images to htm

2019-08-02 15:23发布

反正是有写图像中的freemarker而不是给的环节

<img src="${pathToPortalImage}

注:不能,我们使用otputstream或东西freemarker的?

Answer 1:

您可以直接嵌入图像为Base64在HTML中img标记。

为了将图像转换为基64,您可以使用Apache的百科全书(编解码器) 。

下面是使用Apache下议院IO +编解码器解决方案(但是你可以不用,如果你想要做的):

File img = new File("file.png");
byte[] imgBytes = IOUtils.toByteArray(new FileInputStream(img));
byte[] imgBytesAsBase64 = Base64.encodeBase64(imgBytes);
String imgDataAsBase64 = new String(imgBytesAsBase64);
String imgAsBase64 = "data:image/png;base64," + imgDataAsBase64;

然后传递变量imgAsBase64到Freemarker的背景下,并使用它像这样:

<img alt="My image" src="${imgAsBase64}" />


Answer 2:

上述一个很好的例子。 但随着JAVA 8,我们可以做这样的事情:

Path path = Paths.get("image.png");
byte[] data = Files.readAllBytes(path);
byte[] encoded = Base64.getEncoder().encode(data);
String imgDataAsBase64 = new String(encoded);
String imgAsBase64 = "data:image/png;base64," + imgDataAsBase64;


文章来源: Feemarker writing images to html