2010-03-03 8 views
5

SVG 이미지를 생성하고 Apache Batik을 사용하여 PNG로 변환하려고합니다. 그러나, 나는 빈 이미지로 끝나고 나는 왜 볼 수 없다.SVG를 PNG로 트랜스 코딩 할 때 빈 이미지 가져 오기

SVGDomImplementation의 문서를 내 트랜스 코딩의 기본으로 사용합니다 (SVG를 디스크에 쓰거나 다시로드하지 않기 위해). 다음은 그 예입니다 :

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

SVG 문서 작성 방법에 달려 있다고 생각합니다. 무엇을 svgGenerator (어떤 것으로 가정합니까? SVGGraphics2D)을 사용하고 있습니까? 당신이 document에서 SVG 문서를 구축 한 경우

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

, 당신은 그것을 TranscoderInput 생성자에 전달해야합니다.

This page은 SVG DOM을 JPEG로 래스터 화하는 예를 갖는다.

+0

올바른 경우 svgGenerator는 SVGGraphics2D입니다. getDOMFactory()는 메소드 시작 부분에서 작성한 것과 동일한 문서/오브젝트를 리턴하므로 아무런 차이가 없습니다. 저는 이미 JPEG 예제를 여러 번 읽었습니다. 아마도 그 예제를 PNG로 바꾸는 것만으로는 충분하지 않습니다. (필자는 그 특별한 예제를 실제로 테스트하지 않았습니다.) 아마도 PNG 트랜스 코더는 내가 보지 못하는 다른/추가 설정을 필요로 할 것입니다. 나는 (SVG를 PDF로 올바르게 가져 오는) 나의 실제 문제를 다른 방법으로 해결 했으므로 더 이상 필요하지 않습니다. – fiskeben

관련 문제