मैं कैसे बेस 64 में एक छवि फ़ाइल सांकेतिक शब्दों में बदलना करने के बारे में कई सवाल देखा है में बेस 64 डेटा कन्वर्ट, लेकिन कैसे दूसरी तरह के आसपास के बारे में - कैसे मैं एक XML फ़ाइल में संग्रहीत एक बेस 64 स्ट्रिंग से एक चित्र का पुनर्गठन करते हैं?XSLT: छवि फ़ाइलों
<resource>
<data encoding="base64">
R0lGODlhEAAQAPMAMcDAwP/crv/erbigfVdLOyslHQAAAAECAwECAwECAwECAwECAwECAwECAwEC
AwECAyH/C01TT0ZGSUNFOS4wGAAAAAxtc09QTVNPRkZJQ0U5LjAHgfNAGQAh/wtNU09GRklDRTku
MBUAAAAJcEhZcwAACxMAAAsTAQCanBgAIf8LTVNPRkZJQ0U5LjATAAAAB3RJTUUH1AkWBTYSQXe8
fQAh+QQBAAAAACwAAAAAEAAQAAADSQhgpv7OlDGYstCIMqsZAXYJJEdRQRWRrHk2I9t28CLfX63d
ZEXovJ7htwr6dIQB7/hgJGXMzFApOBYgl6n1il0Mv5xuhBEGJAAAOw==
</data>
<mime>image/gif</mime>
<resource-attributes>
<file-name>clip_image001.gif</file-name>
</resource-attributes>
</resource>
ऊपर एक्सएमएल नोड resource
, मैं clip_image001.gif
बनाने के बारे में कैसे जाते हो देखते हुए?
का सुझाव दें:
- XSLT प्रोसेसर और/या एक्सटेंशन इसे सक्षम, प्लस
- एक नमूना XSLT कि चलाता है रूपांतरण
ध्यान दें कि यह कम से कम संभाल करने में सक्षम होना चाहिए जीआईएफ & पीएनजी फ़ाइल प्रारूप। पसंदीदा रूप से किसी भी ओएस तक सीमित नहीं है।
लागू समाधान
Mads Hansen's समाधान के आसपास आधारित है। मुख्य अंतर यह है कि मैंने net.sf.saxon.value.Base64BinaryValue
को saxon
नेमस्पेस का उपयोग करने के बजाय सीधे मेरे नामस्थान में संदर्भित किया, क्योंकि मैंने base64Binary-to-octets
और base64Binary
फ़ंक्शंस के सैक्सोनिका वेबसाइट के विवरणों की तुलना में जावा एपीआई को अधिक सहजता से समझा।
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:b64="net.sf.saxon.value.Base64BinaryValue"
xmlns:fos="java.io.FileOutputStream"
...
exclude-result-prefixes="b64 fos">
...
<xsl:for-each select="resource">
<xsl:variable name="b64" select="b64:new(string(data))"/>
...
<xsl:variable name="fos" select="fos:new(string($img))"/>
<xsl:value-of select="fos:write($fos, b64:getBinaryValue($b64))"/>
<xsl:value-of select="fos:close($fos)"/>
</xsl:for-each>
...
पीएस छवि फ़ाइलों की पहचान करने के लिए आवश्यक हैश प्राप्त करने के लिए कैसे की मेरी कार्यान्वयन के लिए sibling question देखें।
यह प्रश्न another question I have asked previously का एक उपविभाग है।
धन्यवाद! यह वही है जो मैं चाहता था, क्योंकि यह वास्तव में बाहरी फाइलों को छवियों को लिख रहा है। – bguiz
मुझे लगता है कि यह 'सैक्सन होना चाहिए: बेस 64 बाइनरी-टू-ऑक्टेट्स '(पीछे की ओर' के साथ)। Http://www.saxonica.com/documentation/extensions/functions.html –
धन्यवाद, जैकम देखें। मैंने कोड नमूना सही किया है। –