java - एसवीजी को पीएनजी पर-मक्खी में कैसे परिवर्तित करें



svg png (1)

मैं एक एसवीजी को पीएनजी में परिवर्तित करने की कोशिश करता हूं svg दस्तावेज़ एक सर्वर से एक Inputstream रूप में आ रहा है।

सबसे पहले, मैं एसटीवी स्ट्रीम को बाइट सरणी में परिवर्तित करता हूं:

 byte[] streamBytes = IOUtils.toByteArray(svgStream);

फिर मैं बाइट्स को OutputStream (पीएनजी) में निम्न कोड के साथ कनवर्ट करता हूं।

private ByteArrayOutputStream svgToPng(byte[] streamBytes)
                                            throws TranscoderException, IOException {
        PNGTranscoder t = new PNGTranscoder();
        TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(streamBytes));
        ByteArrayOutputStream ostream = new ByteArrayOutputStream();
        TranscoderOutput output = new TranscoderOutput(ostream);

        t.transcode(input, output);

        ostream.flush();
        // ostream.close();
        return ostream;
    }

लेकिन मुझे " t.transcode(input, output); " द्वारा अशक्त सूचक अपवाद मिलता है t.transcode(input, output); "

org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Premature end of file.
graphdata : null
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)

नोट: अगर मैं एसवीजीस्ट्रीम को वही डिस्क पर सहेजता हूं और निम्नलिखित ट्रांसकोडरिनपुट को यूरी कन्स्ट्रक्टर के साथ प्रयोग करता हूं, तो यह काम करता है। लेकिन मेरे मामले में मैं डिस्क पर सहेजना नहीं चाहता।

TranscoderInput input = new TranscoderInput(new File("c:/a.svg").toURI().toString());

मुझे समस्या मिली

मैं हर बार अगर svgstream ठीक है या नहीं की जाँच की है यह देखने के लिए कि क्या यह ठीक है, मैंने हर बार अपनी टिप्पणी में कोड के साथ एक एसवीजी फाइल बनाई। तार्किक रूप से यह स्ट्रीम खपत की अंत में कोई वास्तविक धारा नहीं थी इसके कारण अपवाद हुआ सभी को धन्यवाद..






batik