2010-03-03 16 views
5

पर एसवीजी ट्रांसकोड करते समय खाली छवि प्राप्त करें मैं एक एसवीजी छवि उत्पन्न करने की कोशिश कर रहा हूं और फिर इसे अपाचे बटिक का उपयोग करके पीएनजी में ट्रांसकोड कर रहा हूं। हालांकि, मैं एक खाली छवि के साथ समाप्त होता हूं और मैं नहीं देख सकता क्यों।पीएनजी

मैं अपने ट्रांसकोडिंग के लिए आधार के रूप में एसवीजीडीओएम कार्यान्वयन से दस्तावेज़ का उपयोग करता हूं (डिस्क पर एसवीजी लिखने से बचने और इसे फिर से लोड करने से बचने के लिए)। यहां एक उदाहरण दिया गया है:

DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation(); 
    String namespace = SVGDOMImplementation.SVG_NAMESPACE_URI; 
    Document document = domImpl.createDocument(namespace, "svg", null); 

    //stuff that builds SVG (and works) 

    TranscoderInput transcoderInput = new TranscoderInput(svgGenerator.getDOMFactory()); 
    PNGTranscoder transcoder = new PNGTranscoder(); 
    transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(svgWidth)); 
    transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(svgHeight)); 

    try { 
    File temp = File.createTempFile(key, ".png"); 
    FileOutputStream outputstream = new FileOutputStream(temp); 

    TranscoderOutput output = new TranscoderOutput(outputstream); 

    transcoder.transcode(transcoderInput, output); 
    outputstream.flush(); 
    outputstream.close(); 
    name = temp.getName(); 
    } catch (IOException ioex) { 
    ioex.printStackTrace(); 
    } catch (TranscoderException trex) { 
    trex.printStackTrace(); 
    } 

मेरी समस्या यह है कि परिणामस्वरूप छवि खाली है और मैं क्यों नहीं देख सकता। कोई संकेत?

उत्तर

1

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप एसवीजी दस्तावेज़ कैसे बना रहे हैं। svgGenerator के लिए आप क्या उपयोग कर रहे हैं (जो मुझे लगता है कि SVGGraphics2D है)?

TranscoderInput transcoderInput = new TranscoderInput(svgGenerator.getDOMFactory()); 

आप एसवीजी दस्तावेज़ का निर्माण किया गया है document में है, तो आप यह TranscoderInput निर्माता को पारित करना चाहिए।

This page में एक जेपीईजी में एसवीजी डोम को रास्टराइज करने का एक उदाहरण है।

+0

सही, svgGenerator एक SVGGraphics2D है। GetDOMFactory() उसी दस्तावेज़/ऑब्जेक्ट को विधि के रूप में प्रस्तुत करता है जिसे मैं विधि की शुरुआत में बनाता हूं, इसलिए इससे कोई फर्क नहीं पड़ता। मैं पहले से ही जेपीईजी उदाहरण से अधिक बार रहा हूं। शायद पीएनजी में उस उदाहरण को बदलने के लिए पर्याप्त नहीं है (मैंने वास्तव में उस विशेष उदाहरण का परीक्षण नहीं किया था), और शायद पीएनजी ट्रांसकोडर को कुछ अन्य/अतिरिक्त सेटिंग्स की आवश्यकता है जिन्हें मैं नहीं देख रहा हूं। मैंने अपनी वास्तविक समस्या को हल किया (एसवीजी को पीडीएफ में ठीक से प्राप्त करना), इसलिए अब इसकी आवश्यकता नहीं है। – fiskeben

संबंधित मुद्दे