Olá, eu tenho uma imagem svg carregado num ByteArraysOutputStrem “baos” e preciso transformar em BufferedImage, o problema é q n encontro um outro jeito de fazer isso sem q tenha um URL e está dando a seguinte exception:
java.lang.ClassCastException: org.apache.xerces.dom.DeferredDocumentImpl cannot be cast to org.apache.batik.dom.svg.SVGOMDocument
at org.apache.batik.bridge.BridgeContext.setDocument(BridgeContext.java:441)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:54)
na linha 29 “root = builder.build(ctx, doc);”
[code]UserAgent userAgent = new UserAgentAdapter();
DocumentLoader loader = new DocumentLoader(userAgent);
BridgeContext ctx = new BridgeContext(userAgent, loader);
BufferedImage bufImg =
new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = GraphicsUtil.createGraphics(bufImg);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = factory.newDocumentBuilder();
} catch (ParserConfigurationException ex) {
return null;
}
Document doc;
try {
doc = docBuilder.parse(new ByteArrayInputStream(baos.toByteArray()));
} catch (SAXException ex) {
return null;
} catch (IOException ex) {
return null;
}
GVTBuilder builder = new GVTBuilder();
GraphicsNode root = null;
try {
root = builder.build(ctx, doc);
root.paint(graphics);
graphics.dispose();
return bufImg;
} catch (Exception e) {
e.printStackTrace();
}[/code]
alguns imports
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.batik.bridge.BridgeContext;
import org.apache.batik.bridge.DocumentLoader;
import org.apache.batik.bridge.GVTBuilder;
import org.apache.batik.bridge.UserAgent;
import org.apache.batik.bridge.UserAgentAdapter;
import org.apache.batik.ext.awt.image.GraphicsUtil;
import org.apache.batik.gvt.GraphicsNode;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;