es sowieso Bild in Freemarker zu schreiben, anstatt Link alsFeemarker Schreiben Bilder in HTML
geben<img src="${pathToPortalImage}
Hinweis: kippe wir verwenden otputstream oder etwas in Freemarker?
es sowieso Bild in Freemarker zu schreiben, anstatt Link alsFeemarker Schreiben Bilder in HTML
geben<img src="${pathToPortalImage}
Hinweis: kippe wir verwenden otputstream oder etwas in Freemarker?
Sie können das Bild als base64 direkt in den HTML-Code img
einbetten.
Um ein Bild in Base 64 zu konvertieren, können Sie Apache Commons (codec) verwenden.
Hier ist eine Lösung Apache Commons IO + Codec verwenden (aber man kann ohne tun, wenn Sie wollen):
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;
dann wird die Variable imgAsBase64
in den Freemarker Kontext übergeben, und es wie folgt verwendet werden:
<img alt="My image" src="${imgAsBase64}" />
Ich sende gebautes Format als Inhalt der Post, in Thunderbird funktioniert es gut und Bild wird geladen. Aber in MS Outlook Bild wird nicht geladen – Janith
Sie sollten wissen, dass "Daten" URI-Schema wird nicht überall unterstützt. Zum Beispiel IE7 weiß es nicht. Update: Ich sehe, Sie haben gerade festgestellt, dass es auch nicht mit Outlook funktioniert. Zum Glück, da es eine E-Mail ist, können Sie die Bilder anhängen. Aber natürlich nicht mit FreeMarker, sondern mit der JavaMail API. – ddekany
es ist für mich gearbeitet, tq –
Ein gutes Beispiel oben. Aber mit JAVA 8 wir können etwas tun:
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;
Freemarker nur eine Vorlage, und Bild sein Bild, müssen Sie die URL zur Verfügung zu stellen, entweder Web-URL der lokalen Datei-URL. – Ankit
Ich brauche so etwas http://www.conandalton.net/2008/10/sending-binary-data-from-freemarker.html – Janith