Sto cercando di generare un'immagine SVG e poi transcodificarlo in PNG usando Apache Batik. Tuttavia, finisco con un'immagine vuota e non riesco a capire perché.ottenere l'immagine vuoto quando la transcodifica SVG in PNG
Uso il documento da SVGDomImplementation come base per la mia transcodifica (per evitare di scrivere l'SVG sul disco e caricarlo di nuovo). Ecco un esempio:
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();
}
mio problema è che l'immagine risultante è vuota e non riesco a capire perché. Qualche suggerimento?
corretta, lo svgGenerator è uno SVGGraphics2D. GetDOMFactory() restituisce lo stesso documento/oggetto di quello che ho creato all'inizio del metodo, quindi non fa alcuna differenza. Sono già stato sopra l'esempio JPEG più volte. Forse non è sufficiente cambiare quell'esempio in PNG (non ho davvero provato questo particolare esempio), e forse il transcoder PNG ha bisogno di altre impostazioni aggiuntive che non vedo. ho risolto il mio problema reale (ricevendo lo SVG in un file PDF correttamente) in un altro modo, quindi questo non è necessario più. – fiskeben