with custom convertir color code java svg png batik

java - custom - Cómo convertir SVG en PNG sobre la marcha



svg to png size (1)

Encontré el problema.

Comprobé cada vez si el svgstream está bien o no. Para ver si está bien, creé cada vez un archivo SVG con el código en mi comentario. Lógicamente, consumió la corriente. No hubo una transmisión real al final. Causó la Excepción. Gracias a todos..

Intento convertir un svg en PNG. el documento svg proviene de un servidor como Inputstream .

Primero, convierto la secuencia svg en una matriz de bytes con:

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

Luego convierto los bytes en OutputStream (PNG) con el siguiente código.

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; }

Pero obtengo una excepción de puntero nulo por " 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)

Nota: Si guardo el svgstream en el disco y uso la siguiente entrada de transcodificador con el constructor uri, entonces funciona. Pero en mi caso no quiero guardar en el disco.

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