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