Sorry for all the mailing list questions. I'm quite new to SVG and Batik and 
feel a bit overwhelmed with all the pieces.

I'm trying to figure out the best way to transform SVG Images using the Batik 
Library. Our application would like to use SVG images and resize, scale, and 
rotate images. One current method I am trying is creating a new VG document and 
attaching the SVG I want to modify to it and then transforming the new SVG 
File. I'm not sure if this is the easiest or most correct way.

            DOMImplementation newSvgTest = 
SVGDOMImplementation.getDOMImplementation();
            String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
            Document newDoc = newSvgTest.createDocument(svgNS, "svg", null);

            Element root = newDoc.getDocumentElement();
            root.setAttributeNS(null, "viewBox", "0 0 100 100");

            Element svgTarget = newDoc.createElementNS(svgNS, "image");
            svgTarget.setAttributeNS(null, "x", "0");
            svgTarget.setAttributeNS(null, "y", "0");
            svgTarget.setAttributeNS(null, "width", width.toString());
            svgTarget.setAttributeNS(null, "height", height.toString());
            svgTarget.setAttributeNS(null, "transform", 
String.format("rotate(45, %f/2, %f/2)", width, height));
            svgTarget.setAttributeNS("http://www.w3.org/1999/xlink";, 
"xlink:href", this.getOwner().getSHIP().getImageResourceDir()+ File.separator + 
image.getFilename()); //SVG File

            root.appendChild(svgTarget);

But when I try to transcode this document all I get is the error:

         java.lang.IllegalStateException: Unknown protocol: c
                at 
org.apache.felix.framework.URLHandlersStreamHandlerProxy.toExternalForm(URLHandlersStreamHandlerProxy.java:481)
                at 
org.apache.felix.framework.URLHandlersStreamHandlerProxy.toExternalForm(URLHandlersStreamHandlerProxy.java:474)
                at java.net.URL.toExternalForm(URL.java:921)
                at java.net.URL.toString(URL.java:907)
                at 
org.apache.felix.framework.URLHandlersStreamHandlerProxy.openConnection(URLHandlersStreamHandlerProxy.java:267)
                at java.net.URL.openConnection(URL.java:971)
                at 
org.apache.batik.util.ParsedURLData.openStreamInternal(ParsedURLData.java:517)
                at 
org.apache.batik.util.ParsedURLData.openStream(ParsedURLData.java:471)
                at 
org.apache.batik.util.ParsedURL.openStream(ParsedURL.java:429)
                at 
org.apache.batik.bridge.SVGImageElementBridge.openStream(SVGImageElementBridge.java:377)
                at 
org.apache.batik.bridge.SVGImageElementBridge.createImageGraphicsNode(SVGImageElementBridge.java:242)
                at 
org.apache.batik.bridge.SVGImageElementBridge.buildImageGraphicsNode(SVGImageElementBridge.java:177)
                at 
org.apache.batik.bridge.SVGImageElementBridge.createGraphicsNode(SVGImageElementBridge.java:119)
                at 
org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:213)
                at 
org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:171)
                at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:82)
                at 
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:208)
                at 
org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:92)
                at 
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
                at 
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
                at 
com.seriousintegrated.ship.propertysets.ImagePropertySet.setScaledVectorImage(ImagePropertySet.java:233)
                at 
com.seriousintegrated.ship.propertysets.ImagePropertySet.mashImage(ImagePropertySet.java:153)
                at 
com.seriousintegrated.ship.propertysets.ImagePropertySet.mash(ImagePropertySet.java:401)
                at 
com.seriousintegrated.ship.objects.SHIPObject.mashProperties(SHIPObject.java:960)
                at 
com.seriousintegrated.ship.objects.SHIPObject.mash(SHIPObject.java:989)
                at 
com.seriousintegrated.ship.objects.SHIPObject.mash(SHIPObject.java:1005)
                at 
com.seriousintegrated.ship.objects.DryLandObject.mash(DryLandObject.java:101)
[catch] at com.seriousintegrated.ship.base.SHIP.mash(SHIP.java:414)
                at 
com.seriousintegrated.ship.tide.settings.project.MashWorker.doInBackground(MashWorker.java:46)
                at 
com.seriousintegrated.ship.tide.settings.project.MashWorker.doInBackground(MashWorker.java:25)
                at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
                at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
                at java.util.concurrent.FutureTask.run(FutureTask.java:166)
                at javax.swing.SwingWorker.run(SwingWorker.java:335)
                at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                at java.lang.Thread.run(Thread.java:724)

Thanks,
Mark

Reply via email to