2012-11-12 19 views
5

HTML करने के लिए छवियों के बजाय के रूप मेंFeemarker लेखन

<img src="${pathToPortalImage}

नोट लिंक देने के freemarker में छवि लिखने के लिए वैसे भी है: नहीं कर सकते हम otputstream या freemarker में कुछ का उपयोग करें?

+0

freemarker सिर्फ एक टेम्पलेट, और छवि छवि किया जा रहा है, तो आप स्थानीय फ़ाइल यूआरएल के वेब यूआरएल या तो अपने URL प्रदान करना होगा। – Ankit

+0

मुझे इस तरह की कुछ चाहिए http://www.conandalton.net/2008/10/sending-binary-data-from-freemarker.html – Janith

उत्तर

9

आप छवि को सीधे HTML img टैग के अंदर बेस 64 के रूप में एम्बेड कर सकते हैं।

किसी छवि को बेस 64 में बदलने के लिए आप Apache Commons (codec) का उपयोग कर सकते हैं।

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}" /> 
+0

मैं मेल की सामग्री के रूप में निर्मित प्रारूप भेज रहा हूं, थंडरबर्ड में यह ठीक काम कर रहा है और छवि ठीक लोड हो रहा है लेकिन एमएस आउटलुक छवि में – Janith

+0

लोड नहीं हो रहा है आपको पता होना चाहिए कि "डेटा" यूआरआई योजना हर जगह समर्थित नहीं है। उदाहरण के लिए आईई 7 इसे नहीं जानता है। अद्यतन: मुझे लगता है कि आपने अभी महसूस किया है कि यह Outlook के साथ भी काम नहीं करता है। सौभाग्य से, चूंकि यह एक ईमेल है, आप छवियों को संलग्न कर सकते हैं। लेकिन निश्चित रूप से, यह फ्रीमार्कर के साथ नहीं किया गया है लेकिन जावामेल एपीआई के साथ किया गया है। – ddekany

+0

यह मेरे लिए काम किया जाता है, टीक्यू –

0

ऊपर एक महान उदाहरण है। लेकिन जावा 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; 
संबंधित मुद्दे